javascript中声明变量名name(var name)被转成字符串的问题

东明兄 2019-08-22
0条评论 1,031 次浏览
东明兄 2019-08-220条评论 1,031 次浏览

因为将变量命名为 name 产生了一个bug,害我找半天原因,
在浏览器控制台 声明一个名为name的数组,打印出来却是字符串:

var name =['1','2','3','4','5'];


查阅资料后了解到 name就是,用来表示 浏览器窗口的名称, 会调用 toString 将赋给它的值转换成对应的字符串表示。


What you are seeing is a global variable that is part of the window object. This is actually a value the browser uses that reflects the name of the window. (see documentation)
Since is a string getter/setter, your array is being cast to a string. (and the console operates in the “global scope”, so var name and are the same value. (if you were nested inside a function, this same behavior would not apply because it wouldn’t be the global scope anymore)