null是否为零,未定义为算术表达式上的数字?

tal*_*les 16 javascript null nan undefined zero

null评价为0undefinedNaN算术表达式?

根据一些测试,似乎如此:

> null + null
0

> 4 + null
4

> undefined + undefined
NaN

> 4 + undefined
NaN
Run Code Online (Sandbox Code Playgroud)

假设这个是安全的还是正确的?(文件中的引用是A +).

Ber*_*rgi 12

在算术表达式上,null被评估为0并且未定义为NaN吗?假设这个是安全的还是正确的?

是的."算术表达式"将使用该ToNumber操作:

 Argument Type | Result
 --------------+--------
 Undefined     | NaN
 Null          | +0
 …             |
Run Code Online (Sandbox Code Playgroud)

它用于以下"算术"表达式:

它不是由相等运算符使用,所以null == 0是假的(null !== 0无论如何)!


tal*_*les 5

似乎是安全,因为这样的假设,在一个算术表达式(例如 另外),该方法ToNumber将调用它,评估NaN+0undefinednull分别为:

                     To Number Conversions
??????????????????????????????????????????????????????????????
? Argument Type ?                   Result                   ?
??????????????????????????????????????????????????????????????
? Undefined     ? NaN                                        ?
?               ?                                            ?
? Null          ? +0                                         ?
?               ?                                            ?
? Boolean       ? The result is 1 if the argument is true.   ?
?               ? The result is +0 if the argument is false. ?
?               ?                                            ?
? Number        ? The result equals the input argument (no   ?
?               ? conversion).                               ?
?               ?                                            ?
? String        ? See grammar and note below.                ?
?               ?                                            ?
? Object        ? Apply the following steps:                 ?
?               ?   1. Let primValue be ToPrimitive(input    ?
?               ?      argument, hint Number).               ?
?               ?   2. Return ToNumber(primValue).           ?
??????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

ECMAScript语言规范-ECMA-262版本5.1


Chu*_*urk 1

不受类型限制,

null == false == 0

null !== false !== 0
Run Code Online (Sandbox Code Playgroud)

http://www.mapbender.org/JavaScript_pitfalls:_null,_false,_undefined,_NaN#0_6

照这样说,null == 0null + 4 = 4

我希望这有帮助。