84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
试着在你的浏览器上运行这段儿代码, 是不是很惊奇?
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
是不是好奇异!!!!?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
在 console 里的 var 是写到 window 上的。var name = [1,2,3,4]; 相当于window.name = [1,2,3,4];
var name = [1,2,3,4];
window.name = [1,2,3,4];
而 window 的 name 属性应该是用Object.defineProperty设定了 get set 函数的。
Object.defineProperty
你可以通过Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})来设置 name
Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})
Object.defineProperty(window,"name",{get:()=>[1,2,3,4]}) console.log(Array.isArray(name)); // true console.log(typeof name); // object
name是BOM的一个属性https://developer.mozilla.org...
应该是和window.name属性冲突了,在浏览器的全局作用于中本生就有name,是用来 获取/设置窗口的名称,并且默认的是String类型。应该是你设置name = [1,2,3]的时候,浏览器把数组通过toString方法转化为了字符串赋值给了name。如果你在局部作用域中这样写就不会错。
window.name
name
name = [1,2,3]
toString
(function(){ var name = [1,2,3,4]; console.log(Array.isArray(name)); //true console.log(typeof name); //object })()
在 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
name是BOM的一个属性
https://developer.mozilla.org...
应该是和
window.name
属性冲突了,在浏览器的全局作用于中本生就有name
,是用来 获取/设置窗口的名称,并且默认的是String类型。应该是你设置name = [1,2,3]
的时候,浏览器把数组通过toString
方法转化为了字符串赋值给了name
。如果你在局部作用域中这样写就不会错。window.name