美文网首页
javascript函数部分知识点

javascript函数部分知识点

作者: edwin_hei | 来源:发表于2016-10-06 11:56 被阅读0次

    知识点:

    1. 函数声明的三种方式;
    2. 函数的重复声明;
    3. 函数作为第一等公民;
    4. 函数名的提升
      5.不能在条件语句中声明函数
    5. 函数name+length属性以及toString(0方法
    6. 函数作用域
    7. 函数本身的作用域
    8. 参数的省略
    9. 同名参数
    10. arguments对象
    11. 函数闭包
    12. 立即调用的函数表达式(iife)
    13. eval命令
    14. 间接调用和直接调用

    答案:

    1. function命令
    function print(s){
      console.log(s);
    }
    

    函数表达式

     var print = function(s){
      console.log(s);
    };
    

    function构造函数

    var add = new Funciton(){
      'x',
      'y',
      'return(x+y)';
    }
    //你可以传递任意参数给function构造函数,只有最后一个参数
    //会被当做函数体,如果只有一个参数,该参数就是函数体.
    
    1. 后面声明的会覆盖前面声明的.
    2. 函数与其他值地位相同.凡是可以使用值的地方,就能使用函数.可以把函数作为参数传递,作为返回值返回


      输出结果:2
    3. javascript引擎将函数名视为同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样被提升到代码头部.
    4. 在条件语句中声明的函数,可能无效,意思就是相当于声明了这个函数,在任何地方都可以使用


      返回结果:你好啊,我还是可以输出
    5. 函数name属性返回函数的名字,匿名函数返回空字符串,返回的内容是function与括号之间的部分;
      length属性返回的是函数定义时的参数个数;
      toString()方法返回的是函数声明,连同函数的注释部分都会返回
    6. 作用域(scope)指的是变量存在的范围,javascript只有两种作用域;一种是全局作用域,变量在整个程序中一直存在,所有地方都可以读取,另一种是函数作用域,变量只在函数内部存在.
      在函数外部声明的变量就是全局变量(global variable),它可以在函数内部读取
      注意:局部变量只能在函数内部声明,在其他区块中声明,一律都是全局变量.
    7. 函数本身也是一个值,也有自己的作用域,他的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关.


      运行结果在图中第二行
    8. 函数的参数是可以省略的,省略不会报错
    9. 同名参数,取最后一个参数作为传入值
    10. 由于javascript允许函数有不定数目的参数,所以我们需要一种机制,可以在函数体内部读取所有参数,这就是arguments对象的由来
      arguments对象,包括了运行时所有传进来的参数
      arguments与数组很像,但是他是一个对象,不是数组,数组专有方法(slice和forEach等)不能在arguments对象上直接使用.
      arguments对象带有一个callee属性,返回他所对应的原函数.这个属性在严格模式下是禁用的,因此不建议使用


      运行结果在第三行
    11. 闭包(colsure) 子函数读取函数内部的变量,可以简单理解成"定义在一个函数内部的函数",闭包最大的特点就是可以记住"诞生的环境".在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁.
      闭包最大用处的两个,一个是可以读取函数内部的变量,另一就是让这些变量保存在内存中.
    12. javascript引擎规定,如果function关键字出现在行首,一律解释成语句,如果要函数立即执行,解决方法就是不要让funciton还出现在行首,通过圆括号开头解决,这样引擎就认为后面跟的是一个表达式,而不是函数定义语句,所以就避免了错误,立即调用函数表达式(immediately-invoked function expression),简称IIFE;
    13. eval命令的作用是,将字符串当做语句执行,由于eval没有自己的作用域,都在当前作用域内执行,因此可能会修改当前作用域的变量的值,造成安全问题,使用strict模式的话,eval内部声明的变量,不会影响到外部作用域,但是在此,模式下eval依然可以读写当前作用域的变量
      运行速度较慢.
    14. 直接调用的作用域总是当前作用域,间接调用的作用域总是全局作用域

    相关文章

      网友评论

          本文标题:javascript函数部分知识点

          本文链接:https://www.haomeiwen.com/subject/moeeyttx.html