码迷,mamicode.com
首页 > 其他好文 > 详细

函数名的提升,属性和方法

时间:2016-04-24 18:27:59      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:



   JavaScript引擎将函数名视同变量名,采用function命令声明函数时,整个函数会被提升到代码头部。

    var sum = add(1, 2);
    console.log(sum);
    function add(x, y) {
    return x + y;
    }
    以上代码由于“变量提升”,函数f被提升到了代码头部,在调用之前就已经声明了。采用赋值语句定义函数就会报错。
    如果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义。

name属性:返回紧跟在function关键字之后的那个函数名。

        function fn1() {}
        console.log(fn1.name);
        var fn2 = function() {};
        console.log(fn2.name);
        var fn3 = function fn3() {};
        console.log(fn3.name);

    length属性:返回函数定义中参数的个数。

        function fn(x, y) {}
        console.log(fn.length);

 

 函数作用域

    作用域指的是变量存在的范围。一种是全局作用域,变量在整个程序中一直存在;另一种是函数作用域,变量只在函数内部存在。
        (1) 在函数外部声明的变量就是全局变量(global variable),它可以在函数内部读取。
        (2) 在函数内部定义的变量,外部无法读取,称为“局部变量”(local variable)。
        (3) 函数内部定义的变量,会在该作用域内覆盖同名全局变量。

    函数内部的变量提升

        与全局作用域一样,函数作用域内部也会产生“变量提升”现象。var命令声明的变量,不管在什么位置,变量声明都会被提升到函数体的头部。

    函数本身的作用域
        函数本身也是一个值,也有自己的作用域。它的作用域绑定其声明时所在的作用域。

函数名的提升,属性和方法

标签:

原文地址:http://www.cnblogs.com/lixiaomer/p/5427445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!