Javascript 这个js代码是如何工作的?
Javascript 这个js代码是如何工作的?,javascript,Javascript,var foo=1; 功能条(){ foo=10; 返回; 函数foo(){} } bar(); console.log(foo)在函数栏内部,您正在定义一个函数foo,该函数将在函数内部定义,这意味着您的函数体非常类似于: function bar() { function foo() {} foo = 10; return; } 此函数的作用域位于条体内部,因此它与 function bar() { var foo = function foo() {}; foo =
var foo=1;
功能条(){
foo=10;
返回;
函数foo(){}
}
bar();
console.log(foo)
在函数栏内部,您正在定义一个函数foo
,该函数将在函数内部定义,这意味着您的函数体非常类似于:
function bar() {
function foo() {}
foo = 10;
return;
}
此函数的作用域位于条体内部,因此它与
function bar() {
var foo = function foo() {};
foo = 10;
return;
}
这意味着,当您修改foo
时,您并没有修改全局变量,而是只修改条函数声明中的一个变量:
- 吊运
- 创建一个具有匹配名称的局部变量(就像
var
)
因此函数foo
在foo=10
覆盖一个数字之前创建一个局部变量foo
由于变量是局部变量,函数中没有任何内容与全局变量相接触,全局变量也称为foo
,因此在第1行将其设置为1
,并且永不更改。为什么不更改?您有foo=1
,并且正在记录foo
(即1
)的值。我猜你的意思是你很困惑为什么foo=10
没有覆盖它?这是因为foo
在bar
的范围内是一个不同的变量。这是由foo
方法的声明引起的。。。也许可以对函数中的“highting”@kevinSpaceyIsKeyserSöze no,foo
进行一些研究。该函数是由嵌套函数声明创建的本地符号。您希望输出是什么?它与嵌套函数有关,因为如果删除它,它将打印10