我认识的人只是在学习编程,偶然发现了这一点并让我感到困惑:
请打开控制台(Chrome / Firefox)并输入:NOT DEFERRABLE
我希望var name = ['what', 'the', '...?'];
是一个字符串数组,但是:
name
显示typeof name
而不是string
Array
变量打印字符串而不是数组name
是name.length
而不是13
3
按预期返回数组name = name.split(',')
,但["what", "the", "...?"]
仍为name
,而不是数组 string
是唯一似乎以这种方式行事的变量名称,或者至少我找不到另一个变量名称。
这只是一个控制台怪癖,一个JavaScript引擎错误,还是什么?
注意:以上内容适用于Chrome和Firefox。 IE Edge令人惊讶地按预期工作(name
是typeof name
以及所有这些)。未在其他浏览器上测试过。
答案 0 :(得分:6)
window.name
是一个全局,它是DOM中的一个字符串。
请注意,您可以通过在函数范围内声明变量来解决它:
(function() {
var name = ['foo', 'bar'];
console.log(typeof name);
})();

至于IE / Edge为何与众不同 - 它对规范的解释很可能已经存在多年了。现在更改它将是一个重大变化。