第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一個不理解的問題

一個不理解的問題

莫回無 2018-10-04 10:33:15
var map = {};map[0] // undefinedmap['0'] //undefinedmap['asdf'] //undefined上面代碼是正常,但下面這段代碼并不理解{}[0] //[0] {}['0'] //["0"] {}['asdf'] //["asdf"]求解惑
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

大括號在js中有兩種含義,一個是對象字面量,還有一個就是代碼塊
對象字面量存在于表達式中,所以當該語句按照表達式方式解析的時候,大括號就會被當作是對象字面量。
怎樣才能被識別為表達式呢?
只要當前語句含有運算符就行了,含有運算符的語句一定是表達式。

就比如你上面的那段。含有=運算符,那么這個大括號就被當作對象字面量了。
還有就是JSON形式的大括號也會當作對象字面量來解釋。比如:

var ss = {x:1}["x"];console.log(ss);    //1

除開這兩種方式之外,大括號都會被當作是代碼塊

在你下面的語句中,大括號之間啥都沒有,其實就相當于是空的。
{}[0]直接等效于[0]

想要{}[0]中的大括號按照對象來解析,加上對運算結果沒有影響的運算符就行了:

({}[0])

最后再提幾句,[]也是運算符(成員訪問運算符)啊,為什么{}[0]沒有按照表達式方式解析呢。
因為[]也是有兩個意思的,一個就是剛才提到的訪問成員運算符,還有一個是數(shù)組字面量。

上面提到了,在語句中沒有運算符時,{}被當作了代碼塊,所以{}[0]是等效于[0]的,這是從效果上說的,從語句形式上來說,等效成這樣{};[0]更為準確點。
這樣就能很明顯的看到,[0]是獨立成為一個語句的,當然只能當作是數(shù)組字面量了。
{}[0]返回的那個數(shù)組,就是這個語句右邊那個數(shù)組。


查看完整回答
反對 回復 2018-11-05
  • 1 回答
  • 0 關注
  • 454 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號