!{}[true]什么意思,為什么返回的是true
{}[true]什么意思,為什么返回的是[true]
momoyy123
2016-04-19 16:39:14
TA貢獻(xiàn)446條經(jīng)驗 獲得超754個贊
{}是一個對象,{}[true]就是獲取{}對象里的名字叫true的屬性。由于{}是一個空對象,里面沒有一個叫true的屬性,所以{}[true]返回undefined,而!{}[true]就相當(dāng)于!undefined,即返回的是true。
{}[true],在console控制臺里返回[true],是因為單純寫個{}語法上無法判斷為一個表達(dá)式,也可能表示一代碼段,函數(shù)就是用{}括起來的嘛。那語法上把{}解析為代碼段,后面的[true]就是一個數(shù)組了,所以輸出[true]。
那在前面加個嘆號表示取反操作符,!{}[true]就是明確的一個表達(dá)式。而這個表達(dá)式的值就是true。
或者 var a = {}[true]; 賦值操作符=的右邊也是一個明確的表達(dá)式。
舉報