Javascript Shadowing - 如果您尝试使用 VAR 关键字更改不存在的全局变量,则会产生效果
Javascript Shadowing - Effect if you try to change an already existing global variable w/o using the VAR keyword
所以,我知道声明一个没有var关键字的变量意味着它是在全局范围内声明的。
因此,在下面的第一个示例中,代码的第 4 行将全局变量 person(前面没有 var 关键字)从"Jim"更改为"Andrew"。
var person = "Jim";
function whosGotTheFunc() {
person = "Andrew";
}
person = "Nick";
whosGotTheFunc();
console.log(person);
在第二个示例中,代码的第 4 行创建了一个单独的局部变量,也是授权的人。
var person = "Jim";
function whosGotTheFunc() {
var person = "Andrew";
}
person = "Nick";
whosGotTheFunc();
console.log(person);
但是,这两个示例的第 7 行有什么作用?那行说: 人="尼克";
树屋测验询问记录到控制台的内容。在示例 #1 中,第 4 行将全局变量 person 更改为"Andrew",但随后第 7 行不会影响该全局变量(因此控制台记录"Andrew")...但是,在示例 #2 中,在第 4 行创建局部变量后,第 7 行实际上确实将全局变量的值从"Jim"更改为"Nick"(控制台记录"Nick")。
我想知道的是,在 2 个示例中,为什么第 7 行的行为差异:人 = "尼克???
变量在两个示例中都进行了修改。但是,对 whosGotTheFunc()
的调用是在全局修改之后进行的,因此在第一个例子中,它覆盖了"Nick"的值,将其保留在"Andrew"处。
相关文章:
- 全局变量不起作用
- 检查全局变量是否存在的正确方法是什么
- 返回语句后的函数声明全局变量不会被覆盖
- 在Javascript中,全局变量不会改变函数中的值
- 全局变量不通过函数更改
- Javascript 初学者 - 全局变量不起作用
- JavaScript 中的全局变量不起作用
- javascript 全局变量不能存储值,如果它意味着从 HTML 元素中提取它们
- 全局变量不't随jquery函数变化
- 隐含的全局变量不会被捕获为linter错误
- AJAX和一个全局变量不起作用,我错了吗
- Javascript全局变量不工作&更多
- JavaScript(JQuery)全局变量不工作
- ajax调用后全局变量不变
- bluebird.js P和Promise全局变量不可用
- 全局变量不会起作用
- JavaScript声明的全局变量不能在方法中赋值
- 为什么全局变量不保值
- 全局变量不会在第二个变量中更新
- Javascript全局变量不递增