亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript的稀疏數組問題

JavaScript的稀疏數組問題

smlrole 2015-12-24 15:19:12
這是在看JavaScript權威指南的時候看到的,很不解,a[,,,]和a[,]不一樣嗎,為什么一個是稀疏數組,一個不是呢?為什么a[,,,]這個自動添加了undefine,而a[,]則沒有?
查看完整描述

3 回答

已采納
?
迷途的馬爾斯

TA貢獻72條經驗 獲得超106個贊

a[,,,]和a[,]是不一樣的,a[,,,]的長度是3,而a[,]的長度只有1,由括號內的元素個數(逗號的個數)決定;最后,兩個都會返回undefined的,你打開瀏覽器控制臺試試

查看完整回答
反對 回復 2015-12-24
  • smlrole
    smlrole
    嗯,試了之后兩個返回的都是undefine,而且0 in a1的值都是false;但當我賦值為undefine之后,0 in a1是true,這是什么意思呢?
  • 迷途的馬爾斯
    迷途的馬爾斯
    同學,我今晚回去翻了一下犀牛書,犀牛書用的還是ECMA5,而現在主流已經是ECMA6了,最新的Chrome和Firefox都支持EC6了,EC6里面重新對數組空位作了調整,你書上第四行代碼的"0 in a1"的返回值應該是false的,true已經過時了。在EC6規范下,[,,,]數組表示的是3個空位了,它的length是3,你用for循環遍歷的時候是不會跳過空位的了,但你用map方法來遍歷就會跳過空位,大概有這些新特性;至于你賦值為undefined后,數組里面有元素了,所以就返回true了,這個應該不難理解吧?至于undefined和空位是有區別的。暫時還沒有詳細地研究過,我后面詳細研究一下再和你分享一下吧
  • smlrole
    smlrole
    非常感謝,苦于后來才知道買書買錯了,才湊合看的,原來里面還有點不一樣的東西
點擊展開后面1
?
mmmmm_魂牽夢縈

TA貢獻2條經驗 獲得超0個贊

?因為中間有逗號分割。一個逗號前面有個數值,他這個沒寫數值所以是undefined,a=[,]是一個元素undefined。

中間有幾個逗號就表示他有幾個逗號數量+1的元素,末尾不算,如果沒寫值,自然是undefined;http://img1.sycdn.imooc.com//567ba6d40001774402050091.jpg

查看完整回答
反對 回復 2015-12-24
  • smlrole
    smlrole
    關鍵在于“0 in a1”這個語句,上面的實例代碼是true,而下面的實例代碼是false,雖然我之后實踐發現兩個結果都是false,這書讓我有點不明白,是寫錯了,還是我理解的問題。
  • 3 回答
  • 0 關注
  • 1957 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號