5

コンソールで以下のコードを入力してみましょう。

typeof + ''

これは 'number' を返しますが、引数のない typeof 自体はエラーをスローします。なんで?

4

3 に答える 3

7

単項プラス演算子は、文字列に対して内部ToNumberアルゴリズムを呼び出します。+'' === 0

typeof + ''
// The `typeof` operator has the same operator precedence than the unary plus operator,
// but these are evaluated from right to left so your expression is interpreted as:
typeof (+ '')
// which evaluates to:
typeof 0
"number"

とは異なり、オペレーターによって呼び出されるparseInt内部アルゴリズムは、空の文字列 (および空白のみの文字列) を Number に評価します。仕様から少し下にスクロールします。ToNumber+0ToNumber

空であるか空白のみを含む StringNumericLiteral は に変換されます+0

コンソールでの簡単なチェックは次のとおりです。

>>> +''
<<< 0
>>> +' '
<<< 0
>>> +'\t\r\n'
<<< 0
//parseInt with any of the strings above will return NaN

参考のため:

于 2013-02-22T23:24:41.687 に答える