javascript核心语法————函数、分分支结构

来源:互联网 发布:js倒计时10秒 编辑:程序博客网 时间:2024/06/05 07:53
1. *函数:封装一项专门任务的步骤清单的代码段,起一个名字
         程序中提供的一项服务的步骤说明
    何时使用函数?当一项任务需要反复执行,但又不希望重复编写时
                  代码重用!

    如何声明函数:

function 任务名([参数变量列表]){

步骤清单代码段
                        [return 返回值]
                  }
        ***函数名(任务名): 指向函数定义的一个变量
                     函数:封装函数定义的引用类型对象
        ***声明时,不执行!也不读取内部的代码!
    如何调用函数执行:任何位置: 函数名([参数值列表]);
        ***调用时,才读取内部的代码,执行

    参数变量:专门接收要传入方法中处理的数据的变量
    何时需要定义参数:如果一个函数,必须一些数据才可正常执行
                     需要几个数据,就定义几个参数变量
    何时如何为参数变量赋值:在调用函数时
                       按照参数定义时的顺序和个数
                       依次传入参数值

        返回值:函数的执行结果
        何时需要返回值:只要函数需要有明确的执行结果时
                        如果调用者需要获得明确的执行结果时
        如何定义返回值: 函数定义内部,一般函数体结尾
                        return 值;
        调用者何时如何获得返回值:
                1. 一个有返回值的函数调用,可以当做一个值使用

                2. 调用时,可使用变量保存住函数调用的返回值


***变量作用域:一个变量的可用范围
    2种:1. 全局作用域:window
     全局变量——放在全局作用域(window)中的变量
              可在程序的任何位置访问全局变量
         2. 局部作用域:在函数调用时才创建的作用域
              局部变量:2种:1. 参数变量
                            2. 在函数定义中var的变量
              ***仅在函数调用时,动态创建
                    调用时,如果局部有,就不用全局的!

              ***调用后,随局部作用域一同销毁

函数声明提前:正式开始执行程序前,
                先将var声明的变量和function声明的函数
                提前到*当前作用域*顶部,集中声明
                赋值留在原地
函数按值传递:两变量间赋值,或将变量作为函数的参数传递时
                都仅将变量中的*值*,复制一个*副本*给对方!


2. 全局函数:ES标准中规定的,由浏览器厂商实现的,
             不需要任何对象前缀就可直接访问的函数
     比如:parseInt/Float(str),isNaN(n)
     比如:alert() prompt()——BOM

     1. 编码解码:
        /s?word=%E5%BC%A0%E4%B8%9C
                张       东
        问题1:url中不允许出现多字节字符
        解决:使用encodeURI(),将多字节字符编码为utf-8格式的单字节字符
              使用decodeURI(), 将收到的编码后单字节字符,解码为多字节字符原文。
        /s?word=http%3A%2F%2Ftmooc.cn
                    :  /  /
        问题2:url中不允许出现url的保留字符,比如:: /
        解决:使用encodeURIComponent(),编码多字节字符和保留字
              使用decodeURIComponent(),解码

    2. eval: 执行字符串格式的语句或表达式
         "alert('Hello');"

    3. js中分母是0,不报错!返回:infinity
                                   +∞
        isFinit(n): 判断n是否在有效数字范围内
     
3. *分支结构:
    程序结构:3种:
     顺序结构:默认程序都是自上向下逐行顺序执行
     分支结构:根据不同的条件,选择执行不同的操作
              操作的复杂程度
     循环结构:让程序反复执行同一代码段。

    分支结构:3种情况:
    1. 一个条件,一件事:满足条件就执行,(不满足就什么都不做)
      短路逻辑:条件&&(操作1,操作2...)
        何时使用:操作非常简单时
      if结构:如果 满足*条件*, 就执行代码段
              if(条件){
满足条件时,才能执行的代码段
              }
    2. 一个条件,两件事:二选一执行!
         如果 满足*条件*,就执行操作1,否则,执行操作2
      三目运算:条件?操作1:操作2;
        何时使用:操作1和操作2,都非常简单时
      if...else结构:
         if(条件){
   满足条件才执行的代码段
         }else{//否则
   不满足条件才执行的代码段
         }


    3. 多个条件,多件事,多选一执行!(有可能都不执行)
         如果 满足 条件1 就执行 操作1
    否则,如果满足 条件2 就执行 操作2
    ... ...
                      [否则,默认操作]
      三目:条件1?操作1:
            条件2?操作2:
                    ...:
                默认操作——不可省略
      if...else if结构:
           if(条件1){
满足条件1才执行的操作1;
            }else if(条件2){
满足条件2才执行的操作2;
            }else if(...){
...
            }[else{
  如果以上任何条件都不满足,则执行默认操作
            }]
      switch...case结构:
何时使用:当条件都是*全等*比较时,才可用switch结构
      switch(表达式){ //1. 计算表达式的结果
        //用表达式的值和每个case后的值做**全等**比较
        //碰到一个全等的case值,则进入该case开始执行
//并默认以此触发之后所有case的执行
case 值1:
    满足值1才执行的代码段1;
        case 值2:
             满足值2才执行的代码段2;
             ...:
             ... ...
         default:
    如果前边的值都不满足,执行默认代码段
      }
      break: *中止*当前结构的执行,并跳出结构。
        位置:在每个case之间
      何时可以省略部分break:上下两个case希望执行相同代码时
      


0 0