为什么数组名为name时, 这个数组会自动转换为字符串?如此的怪异.

试着在你的浏览器上运行这段儿代码, 是不是很惊奇?

var name = [1,2,3,4];
console.log(Array.isArray(name)); //false
console.log(typeof name); //string

而只需要换一换变量名

var name1 = [1,2,3,4];
console.log(Array.isArray(name1)); //true
console.log(typeof name1); //object

是不是好奇异!!!!?

阅读 1.6k
评论
    4 个回答
    • 1.1k

    在 console 里的 var 是写到 window 上的。
    var name = [1,2,3,4]; 相当于
    window.name = [1,2,3,4];

    而 window 的 name 属性应该是用Object.defineProperty设定了 get set 函数的。

    你可以通过
    Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})
    来设置 name

    Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})
    console.log(Array.isArray(name));  // true
    console.log(typeof name); // object
      相似问题
      推荐文章