美文网首页
name也是JavaScript的关键保留字

name也是JavaScript的关键保留字

作者: lizhihua | 来源:发表于2016-06-28 18:21 被阅读1061次

    有标题党的嫌疑,name不是关键字,是window下自有的属性。

    最近看《学习JavaScript数据结构与算法》一书,在看到第4章数组,有一个击鼓传花的代码,如下:

    var name = ['John', 'Jack', 'Camila', 'Ingrid', 'Carl'];
    console.log(name);
    

    在Chrome、Firefox中输入这段代码。看看输出的是什么?
    和我们期望的完全不同,结果是: 字符串类型的'John,Jack,Camila,Ingrid,Carl'。

    这是为什么呢?猜想控制台输入var name,也许会访问或操作window.name,所以用谷歌搜索 JavaScript保留字window.name
    看到菜鸟教程(http://www.runoob.com/js/js-reserved.html) 的说明:

    JavaScript 对象、属性和方法
    您也应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名
    Array   Date    eval    function    hasOwnProperty
    Infinity    isFinite    isNaN   isPrototypeOf   length
    Math    NaN     name    Number  Object
    prototype   String  toString    undefined   valueOf
    

    name是JavaScript内置的对象,这句话我猜测意思是想表达全局变量window中具有如上的属性(各种W3C教程虽引导新手,也有误人子弟的嫌疑),所以在全局下声明name,会造成name访问不正常。
    为了证实猜想,验证代码如下:

    window.name = ['John', 'Jack', 'Camila', 'Ingrid', 'Carl'];
    ["John", "Jack", "Camila", "Ingrid", "Carl"]
    window.name
    "John,Jack,Camila,Ingrid,Carl"
    

    所以改成下面这样就好了

    var nameList = ['John', 'Jack', 'Camila', 'Ingrid', 'Carl'];
    console.log(nameList);
    

    相关文章

      网友评论

          本文标题:name也是JavaScript的关键保留字

          本文链接:https://www.haomeiwen.com/subject/ywmtjttx.html