JavaScript 'strict mode' 没有按预期工作?
JavaScript 'strict mode' not working as expected?
var test = function() {
'use strict';
var mapNames = {
'name': 'City Name:',
'coord.lat': 'Latitute:'
};
for (var key in mapNames) {
var names;
if (mapNames[key]) {
name = mapNames[key];
} else {
name = key;
}
}
console.log(name);
}
test();
在上面的代码中,我错误地声明了变量 names
并改用了 name
。我以为 'strict' 模式会捕捉到它,但它没有。在这种情况下,这不应该引发错误吗?
一个name
全局变量已经存在,与你的代码无关;它代表当前 window 的名称,因此您正在分配给一个已经存在的变量。
window.name; // the name of the current window for cross-window communication
window
上的所有内容都被声明为全局变量 - 因此它不是引用错误,因为它正在分配给外部范围中的变量。
超级混乱:D
"use strict"
会阻止定义新的全局变量,这里我们正在执行对现有变量的赋值,将其视为 name
在全局范围内,如 window.Blob
, window.console
等等。
var test = function() {
'use strict';
var mapNames = {
'name': 'City Name:',
'coord.lat': 'Latitute:'
};
for (var key in mapNames) {
var names;
if (mapNames[key]) {
name = mapNames[key];
} else {
name = key;
}
}
console.log(name);
}
test();
在上面的代码中,我错误地声明了变量 names
并改用了 name
。我以为 'strict' 模式会捕捉到它,但它没有。在这种情况下,这不应该引发错误吗?
一个name
全局变量已经存在,与你的代码无关;它代表当前 window 的名称,因此您正在分配给一个已经存在的变量。
window.name; // the name of the current window for cross-window communication
window
上的所有内容都被声明为全局变量 - 因此它不是引用错误,因为它正在分配给外部范围中的变量。
超级混乱:D
"use strict"
会阻止定义新的全局变量,这里我们正在执行对现有变量的赋值,将其视为 name
在全局范围内,如 window.Blob
, window.console
等等。