繁体   English   中英

JavaScript'严格模式'无法按预期工作?

[英]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而犯了一个错误。 我认为'严格'模式会抓住它,但事实并非如此。 在这种情况下,这不应该抛出错误吗?

name全局变量已存在,与您的代码无关; 它表示当前窗口的名称,因此您将分配给现有的变量。

window.name; // the name of the current window for cross-window communication

window上的所有内容都被声明为全局 - 因此它不是引用错误,因为它分配给外部作用域中的变量。

超级混乱:D


"use strict"会阻止定义新的全局变量,这里我们正在对现有变量执行赋值,将其视为name在全局范围内,如window.Blobwindow.console等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM