| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1546 人关注过本帖
标题:数组长度
取消只看楼主 加入收藏
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:5 
数组长度
var name = [1,2];
alert(name.length);结果是5,这是闹哪样

追求卓越,成功就会跟着你走!
2015-05-26 09:15
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
收藏
得分:0 
回复 2楼 林月儿
name这个关键字是干嘛的

追求卓越,成功就会跟着你走!
2015-05-26 10:59
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
收藏
得分:0 
回复 6楼 林月儿
name=[1,2]的length,在不同的浏览器下是不一样的,IE显示的是正确的2,火狐和chrome显示的是3。
name和id是不类似的,id不是js的关键字,id=[1,2]的length在ie,firefox和chrome下的值都是2。
name这个关键字在js中到底是干什么用的?

追求卓越,成功就会跟着你走!
2015-05-26 14:37
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
收藏
得分:0 
回复 9楼 冰镇柠檬汁儿
name是window的属性,那alert也是window的属性,如果执行var alert = [1,2];alert.length的值却是正确的。
不管你是不是window的属性,当我将其覆盖后,再求其值,应该是覆盖后的值,比如var alert = [1,2];alert.length的值是2。window的alert方法已经不存在了。
而,当我对window的name赋值时,不管你赋什么值,它都会先执行toString方法,将你的赋值转为字符串类型再赋给name。但IE确没有做这样的类型转换,window的name属性确确实实被覆盖了。

追求卓越,成功就会跟着你走!
2015-05-27 13:34
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
收藏
得分:0 
回复 11楼 冰镇柠檬汁儿
我说的覆盖就是window.name的值被覆盖啊。js是做不到将一个变量声明为string类型,因为js本身就是弱类型语言,给一个变量什么值,这个变量就是什么类型,变量的类型是根据它的值来决定。
好比window.alert是function类型,但alert=[1,2,3]之后,alert就变成了数组类型。
再来说window.name,即使它原来是字符串类型,给它一个数组,它是不是也应该抛弃它原来的字符串类型而变成数组类型呢,
可能是给window.name赋值时,浏览器内部会将值转为字符串赋给name,也可能是读取window.name时,浏览器内部将window.name转为字符串类型返回。
至于是怎么转成字符串类型的,不知道,但为什么唯独对name这么处理,对alert为什么不转成function类型而是乖巧的变成数组。。。。。。

追求卓越,成功就会跟着你走!
2015-05-27 16:58
jsRank
Rank: 5Rank: 5
等 级:职业侠客
威 望:6
帖 子:69
专家分:303
注 册:2015-5-11
收藏
得分:0 
回复 13楼 冰镇柠檬汁儿
就这样了!
奇怪,散分结贴,分没散到你身上啊,悲剧了。。。

[ 本帖最后由 jsRank 于 2015-5-27 23:30 编辑 ]

追求卓越,成功就会跟着你走!
2015-05-27 23:28
快速回复:数组长度
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016723 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved