2013-05-10 3 views
5

В JavaScript следующая строка кода дает ответа на вопрос 1Каким будет объяснение странного выражения javascript?

+ ! {} [true] 

Я не мог понять, каким образом?

Любые объяснения гуру оцениваются.

+5

http://www.youtube.com/watch?v=kXEgk1Hdze0 – elclanrs

+0

'+! {} [0]' дает ** 1 ** попытаться понять смысл ... – gdoron

+0

@elclanrs О, я люблю это видео. –

ответ

4

{} - пустой объект.

Так {}[0] или {}[true] или {}[1] и т.д .. являются undefined

добавление ! бросает {}[0] как boolean, возвращая противоположное. (undefined становится false, поэтому возвращается true).

добавление + бросает его как int, так true становится 1.

+0

изменился вопрос от [0] до [true]? –

+2

Нет, '{}' не является неопределенным. Это пустой объект. – georg

+0

@ thg435 Действительно! Виноват. –

2

Я попытался объяснить это с помощью кода.

var emptyObject = {}; 
    valueOfUndefinedKey = emptyObject['key_not_exists'], 
    itsNot = !valueOfUndefinedKey , 
    finalConvertedNumber = +itsNot ; 

console.log(
    emptyObject, 
    valueOfUndefinedKey, 
    itsNot, 
    finalConvertedNumber 
) 

который печатает

Object {} 

undefined 

true 

1 
Смежные вопросы