函数的定义

时间:2021-04-10 16:21:29   收藏:0   阅读:8

函数的定义

‘use strict‘;

function foo() {
    var x = 1;
    x = x + 1;
}

x = x + 2; // ReferenceError! 无法在函数体外引用变量x

由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:如下:

‘use strict‘;

function foo() {
    var x = 1;
    function bar() {
        var y = x + 1; // bar可以访问foo的变量x!
    }
    var z = y + 1; // ReferenceError! foo不可以访问bar的变量y!
}

如果内部函数和外部函数的变量名重名怎么办?如下:

function foo() {
    var x = 1;
    function bar() {
        var x = ‘A‘;
        console.log(‘x in bar() = ‘ + x); // ‘A‘
    }
    console.log(‘x in foo() = ‘ + x); // 1
    bar();
}

foo();

JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。
所以结果为:

x in foo() = 1
x in bar() = A

同时由于变量的作用范围是函数内部,所以在for循环等定义的变量作用域均为函数内部。
在函数外部定义的变量为全局变量。

原文:https://www.cnblogs.com/KeepInCode/p/14630326.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!