JavaScript的不一致行为';s+;操作人员
为什么会这样JavaScript的不一致行为';s+;操作人员,javascript,Javascript,为什么会这样 2++3 返回5,但是 '2837363'+'/' 返回 “2837363NaN”?甚至“/”也丢失了 为什么编程语言接受这种语法而不抛出语法错误?它什么时候假设,空的地方计算为0(第一个示例),什么时候计算为NaN(第二个示例)?在变量前面加上+意味着类型强制为数字类型 + 5 => 5 + '5' => 5 +'a' => NaN +'/' => NaN 执行+'/'操作时,结果是NaN在变量前面加上+意味着将类型强制为数字类型 + 5 => 5
2++3
返回5
,但是
'2837363'+'/'
返回
“2837363NaN”
?甚至“/”也丢失了
为什么编程语言接受这种语法而不抛出语法错误?它什么时候假设,空的地方计算为0(第一个示例),什么时候计算为NaN(第二个示例)?在变量前面加上
+
意味着类型强制为数字类型
+ 5 => 5
+ '5' => 5
+'a' => NaN
+'/' => NaN
执行
+'/'
操作时,结果是NaN
在变量前面加上+
意味着将类型强制为数字类型
+ 5 => 5
+ '5' => 5
+'a' => NaN
+'/' => NaN
当您执行
+'/'
时,结果是NaN
您是对的,现在我可以看到:2++3
计算为2+(+3)
,第二个示例类似。谢谢,我知道一元加号,但我在这里没认出。我想,我的表达式可能类似于2+something+3
,但它当然不是,现在我可以看到。它将值转换为一个数字,而不是一个整数。+'0.1322'=>0.1322
你的权利,感谢你指出@FelixKlingYou是对的,现在我可以看到:2++3
计算为2+(+3)
,第二个例子类似。谢谢,我知道一元加号,但我在这里没认出。我想,我的表达式可能类似于2+something+3
,但当然不是,现在我可以看到。它将值转换为一个数字,而不是一个整数。+'0.1322'=>0.1322
您的权利,感谢您指出@felixklingaah。。。javascript:)你应该喜欢它才能理解它。啊。。。javascript:)你应该喜欢它才能理解它。