首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript“严格模式”没有按预期工作吗?

JavaScript“严格模式”没有按预期工作吗?
EN

Stack Overflow用户
提问于 2015-06-28 19:18:25
回答 1查看 916关注 0票数 18
代码语言:javascript
复制
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。我认为‘严格’模式可以捕获它,但它没有。在这种情况下,这不是应该抛出一个错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 19:27:54

name全局变量已经存在,与您的代码无关;它表示当前窗口的名称,因此您将赋值给一个已经存在的变量。

代码语言:javascript
复制
window.name; // the name of the current window for cross-window communication

window上的所有内容都被声明为全局变量,因此它不会出现引用错误,因为它将赋值给外部作用域中的一个变量。

超级迷惑:D

MDN.

上的

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

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31099180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档