2015-08-06 2 views
0

Почему этоПротиворечивое поведение оператора + в JavaScript

2 + + 3

возвращение 5, но это

'2837363' + + '/'

возвращает

"2837363NaN"? Даже «/» потерялся.

Почему язык программирования принимает этот синтаксис, не вызывая синтаксическую ошибку? Когда это предполагается, пустое место оценивается как 0 (1-й пример), а когда - NaN (2-й пример)?

+2

Aaahh ... Javascript :) Вы должны любить его, чтобы понять это. –

ответ

4

Превращение переменной с + подразумевает принуждение типа к номер типа.

+ 5 => 5 
+ '5' => 5 
+'a' => NaN 
+'/' => NaN 

Когда вы +'/' результат NaN

+0

Вы правы, теперь я вижу: '2 + + 3' оценивает' 2 + (+3) ', второй пример аналогичным образом. Спасибо –

+0

Это называется [Унарный плюс] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus) – hindmost

+0

Я знаю унарный плюс, но я не узнал это здесь. Я думал, мое выражение будет чем-то вроде «2 + SOMETHING + 3», но, конечно, это не так, и теперь я вижу. –

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