javaScript 知识点 第二篇 函数

125 阅读3分钟

二 函数

1.创建
  • 关键字

    function 函数名(){
    	代码块
    }
    
  • 字面量

    var 函数名 = function(){
    	代码块
    }
    
  • 构造函数

    var 函数名 = new Function("参数","执行的代码")
    
    2.函数的调用
    • 事件驱动(单击/双击/滑过..)
    • 自调用
    3.函数的参数
    • 形参
    • 实参
    • return返回值
    4.函数作用域
    • 变量关系

      变量的关系:
        1.写在函数内部的叫作局部变量
        2.在全局不能访问局部变量
        3.在局部可以访问全局变量
        4.函数在不调用的时候,局部变量是不存在的.
        5.在函数运行完毕之后,变量被垃圾回收机制回收
      作用域链
          根据函数内部能访问函数外部变量的这种关系。逐层向外查找变量的过程  变量的 作用域链
          
      注:什么是作用域链?(面试常问)
      
           a、 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问。 简单说就是作用域集合
      
           b、当前作用域 -> 父级作用域 -> ... -> 全局作用域   形成的作用域链条
      
           js的执行环境 :
           每个函数的执行都会产生一个执行环境 ;全局执行环境是最外围的执行环境,全局执行环境被认为是window对象,因此所有的全局变量和函数都作为window对象的属性和方法创建的。
      
      

      全局变量 局部变量

    • 变量提升

      var a / function 会被提升到当前作用域顶端

       1.把声明的变量var a 提升到当前作用域的最顶端
      
      2.赋值语句和逻辑语句都不做提升,原地等待执行
      
      3.function关键字声明的函数也会等待提升到作用域的最顶端
      
       4.变量提升的规则:所有用var声明的变量先提升,然后在提升function声明的函数整体(官方解释:函数的执行的权重比较高)
      
      5.匿名函数不会被提升.
      
    • 词法作用域

      静态作用域 动态作用域

    • 作用域链

      当前作用域----父级作用域---全局作用域

    5.函数的this指向
    • 谁调用函数,this指向谁
    • 事件驱动,给谁绑定事件,this指向谁
    6.argument

    函数内部自带的一个对象,形式类似数组,常用来判断传入参数的个数

    7.立即执行函数
     ;(function fn(){
              console.log(10);
           })();
    建议:再立即执行函数前面加一个运算符(目的:防止上面代码的执行)
    
    8.递归(自己调用自己)
function fn(n){
    if(n == 2 || n == 1) return 1;
    return fn(n-1)+fn(n-2);
}
console.log(fn(7));
9.匿名函数

10.回调函数

11.数学函数
Math.random();  //0 - 1 的随机数
Math.round()    //四舍五入取整
Math.ceil()     //向上取整
Math.floor()    //向下取整
Math.abs()      //绝对值
Math.max(num1,num2....)   //比较最大值
Math.min(num1,num2....)   //比较最小值
Math.PI        //π  3.1415926  - 3.1415927 
Math.pow(x,y)   //x的y次方
Math.sqrt()    //开平方
Math.sin
Math.cos
Math.tan