2015-02-20 4 views
4

Может кто-нибудь объяснить, почему эти операции дают эти результаты:Можете ли вы объяснить, объект и массив арифметику в JavaScript

(Я понимаю, что первое из них так или иначе связаны со строками, основываясь на массивах, но что значит «на основе» означает здесь , как это работает внутри)

[] + [] = "" 

[] - []= 0 

[] + {} = "[object Object]" 

[] - {} = NaN 

{} + {} = NaN 

{} - {} = NaN 

{} + 1 = 1 
+0

Принятый Ответ на [Почему is ++ \ [\ [\] \] \ [+ \ [\] \] + \ [+ \ [\] \] = "10"?] (http://stackoverflow.com/questions/7202157/why -is-10) объясняет это очень хорошо. –

ответ

5

При использовании + оператор Javascript попытается преобразовать элементы суммируются в первую строку, а затем в междунар. Когда вы приводите пустой массив в строку вы получите "" поэтому "" + "" = ""

[] + [] = "" // equates to "" + "" = "" 

При использовании - оператора Javascript попытается преобразовать элемент в целые числа. Пустые массивы, отлитые в целых будет продукт 0 так 0 - 0 = 0

[] - []= 0 // equates to 0 - 0 = 0 

То же самое здесь, пустой массив преобразуется в "" и объект преобразуется в "[object Object]" из конкатенации с пустой строкой результат "" + "[object Object]" = "[object Object]"

[] + {} = "[object Object]" // equates to "" + "[object Object]" = "[object Object]" 

{} не может быть приведен к междунар так как вместо того, чтобы бросить в undefined и 0 - undefined = NaN

[] - {} = NaN // equates to 0 - undefined = NaN 

Когда выражение начинается с пустым литералом объектом JavaScript интерпретирует первый {} в качестве пустого блока кода и игнорирует его так оценивает следующие выражения, как + {}, который NaN

{} + {} = NaN // equates to + {} = NaN 


{} - {} = NaN // equates to - {} = NaN 


{} + 1 = 1 // equates to + 1 = 1 
+0

'- {}' приводит к 'NaN' не' undefined'. – undefined

+0

Вы правы, '{}' undefined, так что это то же самое, что и запись '- undefined', которая является' NaN' –

+0

Но как объект может быть 'undefined'? 'Number ({})' также возвращает 'NaN'. – undefined

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