Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个js代码是如何工作的?_Javascript - Fatal编程技术网

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