| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:数组长度
只看楼主 加入收藏
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
window.name没有被覆盖,而只是赋值,因为这个变量已经存在,那么var就变的没有意义了(这是javascript的原则,已经存在的变量,再次var,就将忽略var),所以你无法确定谷歌和火狐是怎么处理这个变量的
不信你可以试试下面的代码
var name = [1,2,3];
alert(name.toString());
alert(name.length);
这个结果说明火狐和谷歌浏览器 更像是 把window.name这个变量定义成string类型的,不论赋值成什么,这个变量都将被当成字符串处理
而ie浏览器则只是把它当成普通javascript变量来用

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-05-27 16:15
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
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
这个我也不清楚,估计是webkit内核的特殊处理,毕竟window.name是名称,而不是普通变量,我觉得没必要这么纠结这个吧
收到的鲜花
  • 林月儿2015-05-28 07:05 送鲜花  9朵   附言:我本是学java的,深刻感受到两者名字相似内 ...

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2015-05-27 17:31
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.017300 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved