多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > htmlcss > 有趣的JavaScript數組

有趣的JavaScript數組

來源:程序員人生   發布時間:2015-04-21 08:43:13 閱讀次數:4143次

      晚上下班的時候,我們又開始討論無聊的問題。1個同事提出以下奇異的場景,聽說是1道面試題:

var o = { 1:'a' ,2:'b' ,length:2 ,push:Array.prototype.push }; o.push('c');
Q:o現在內部的值是甚么模樣?

      我的第1反應是排擠,為何要研究不公道情況下【解釋引擎】的行動?但是這類推論有時候又很吸引人,因而我回來的時候仔細思考了下,發現其實很簡單。

      對push這個方法,我條件反射地想到的就是棧,【數據結構的經典棧】中壓棧和彈棧操作根據的都是棧頂指針,棧頂指針始終指向棧頂,意味著它會由于壓彈棧而自動增減。在javascript中的數組中這個指針就是length。所以在上面的代碼中,o.push('c')就是o.2 = 'c'(固然o.2不能直接訪問,這只是偽代碼),所以代碼履行完o中數據以下

{ 1:'a' ,2:'c' ,length:3 //push操作=>length+1 ,push:Array.prototype.push }

補充說明:
  • JavaScript中,萬物皆對象,而javascript的對象與強類型的對象有1些不同的地方,可以理解成績是1組鍵值對的集合。其array類型也不例外,它的下標訪問就是鍵訪問(不過它的鍵都是自然數),在上面的例子中賦值給a的對象字面量實際摹擬了1個數組(1個下標從1開始的數組)――固然只有部份數組的特性,比如真實的數組在進行鍵訪問的時候,會根據length進行越界檢查。
  • 只要知道push的位置根據的是length就能夠了,下面種種看似奇怪的現象都好理解:
//1.length不存在,引擎置為0 var o = { '1':'a' ,'2':'b' ,push:Array.prototype.push }; o.push('c');//c {0:'c',1:'a',2:'b',...} //2.length為負值,這是個有趣的問題,觸及到原碼反碼和補碼【1】 var o = { '1':'a' ,'2':'b' ,length:⑴ ,push:Array.prototype.push }; o.push('c');//c {1:'a',2:'b',4294967295:'c',length:4294967296,...} //3.length為字符或對象 var o = { 1:'a' ,2:'b' ,length:'A' ,push:Array.prototype.push }; o.push('c');//c {0:'c',1:'a',2:'b',length:1,...}我還以為js解釋器會把A轉換成ASCII碼來給length賦值呢,終究看到了javascript的自由還是有節操的


【1】:計算機中數值都是以補碼方式存儲的,為了方便運算,⑴的補碼與4294967295補碼1樣,根據length的語義,此處是無符號數
             [⑴]補 = 1111 1111 1111 1111 1111 1111 1111 1111 =  [4294967295]補  = 1111 1111 1111 1111 1111 1111 1111 1111
             所以這樣我們接差對2中的o壓入1個對象,key取的是4294967296,但是數組的最大長度限制為4294967296,也就是說下標只能取到4294967295,只會取到32位――對4294967296 = 1 0000 0000 0000 0000 0000 0000 0000 0000 取后32位,就變成了0,所以此次push的位置是0。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: xxxx性欧美 | 天堂在线www | 黄网站大全免费 | 国产人成精品 | 欧美式free群乱| 羞羞动漫官网 | 亚欧成人在线 | xh98hx国产在线视频 | 精品国产理论在线观看不卡 | 黄色a大片 | 一级做受毛片免费大片 | 久久大香线蕉综合爱 | 日本wwwxxxx| 狠狠躁夜夜躁人人躁婷婷视频 | 亚洲特黄大黄一级毛片 | 手机看片日韩福利 | 久久精品国产6699国产精 | 国产精品第4页 | 欧美精品在线一区二区三区 | 久久久久久亚洲精品 | 日本www在线视频 | 伊人网在线视频观看 | 国产福利在线观看永久免费 | 日韩爱爱片 | 午夜羞羞 | 欧美69xx性欧美 | 最近中文字幕免费mv视频8 | 永久免费毛片在线播放 | 久久不卡视频 | 视频在线视频免费观看 | 成人性a激情免费视频 | 国产成人精品久久一区二区小说 | 一区二区三区四区在线播放 | 最近中文字幕无吗 | 无码日韩精品一区二区免费 | 涩综合 | 欧美老人巨大xxxx做受视频 | 精品欧美一区二区三区在线 | 成人gav| 亚洲 欧美精品 | 国产亚洲精品久久久久久小说 |