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