str = "";
num = Number(str);
Numberで空文字を数値に変換させてみた所、num = 0となりました。なぜ0が代入されるのでしょうか??
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ECMAの仕様に
15.7.1.1 Number ( [ value ] )
Returns a Number value (not a Number object) computed by ToNumber(value) if value was supplied, else returns +0.
ECMAScript Language Specification - ECMA-262 Edition 5.1
とあり、ToNumberを見てみると、
A StringNumericLiteral that is empty or contains only white space is converted to +0.
ECMAScript Language Specification - ECMA-262 Edition 5.1
とのことです。
投稿2016/11/29 03:37
総合スコア36115
0
ベストアンサー
そういうものだからとしか言いようがありませんが
""とfalseと0は論理的に偽なので同値だからでしょうね
javascript
1console.log(Number("0")); 2console.log(Number("")); 3console.log(Number(null)); 4console.log(Number(false)); 5
みな0を返します
ちなみに指数や16進数は文字列変換しても同じですが8進数は残念ながら
文字列の場合先頭の0を覗いた10進数になるので注意が必要です
javascript
1/*指数*/ 2console.log(2e3);//2000 3console.log(Number("2e3"));//2000 4 5/*16進数*/ 6console.log(0x11);//17 7console.log(Number("0x11"));//17 8 9/*8進数*/ 10console.log(011);//9 11console.log(Number("011"));//10進数計算で11 12
それと配列も空配列や0のみ投入されたものは0と判断されます
javascript
1<script> 2console.log(Number([]));//0 3console.log(Number([0]));//0 4console.log(Number(["0"]));//0 5console.log(Number([100]));//100 6</script>
投稿2016/11/29 03:43
編集2016/11/29 03:44総合スコア114839
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。