私が気づいたら楽しいテストをしていたnull+null
は0
と同じです。 何か理由がありますか?JavaScriptでヌル+ヌル= 0である理由
7
A
答えて
14
+
オペレータは、数字と文字列でのみ機能します。数字や文字列ではないものが提示されると、それは強くなる。規則はcovered by the specですが、短いバージョンはオペランドがcoerced to primitives(この特定のケースでは何も変化しません、null
はプリミティブです)であり、どちらかが文字列であれば、もう一方は文字列に変換され、連結が行われます。いずれも文字列でない場合は、両方が強制的に数値になり、加算が行われます。
したがってnull
は0であるため、となります。もちろん0
となります。
誰がために私が述べたよう強制ツープリミティブ事の起こりデビッド・ハイムのnull+[]
is "null"
observation、好奇心だ場合:空の配列[]
がプリミティブに強制変換されます。配列をプリミティブに強制すると、toString()
が呼び出され、join()
が呼び出されます。 [].join()
は要素がないため""
です。だからそれはnull+""
だ。だからnull
は文字列の代わりにになり、"null"+""
となります。もちろん"null"
となります。
関連する問題
- 1. 私のcodepush cliがアクティブで、合計が0である理由
- 2. スカラargs(0)理由
- 3. エラー:理由:「locations.0
- 4. アクティビティ通知の送信理由0
- 5. HibernateのsessionFactoryがスレッドセーフである理由
- 6. ロケーションがエンティティである理由
- 7. Grailsサービスクラスがシングルトンである理由
- 8. Javascript Regex replace 0 [0]でなく0
- 9. C:forループでカウンタが0にリセットされない理由
- 10. .NETがフレームワークであり、Javaが言語である理由
- 11. JavaScriptでObject.create()またはnewを使用する理由はありますか?
- 12. パリティをチェックするために(nr&1 == 0)over(nr%2 == 0)を使用する理由はありますか?
- 13. ルビープロセスブロックが100%CPUである理由を理解する方法
- 14. trueの代わりに!0を使用する理由はありますか?
- 15. 文字列 '0' が真である| JavaScriptで偽
- 16. 結果が1である理由を理解しない
- 17. JavaScriptのメモリリークとクロージャ - その理由とその理由
- 18. IEブラウザで右クリックするとJavaScriptが停止する理由
- 19. javascriptをdocument.writeに含める理由
- 20. 「text/javascript」を使用する理由
- 21. 理由です
- 22. Javascriptで `var`を` let`に置き換えない理由はありますか?
- 23. JavaScriptでStrictモードを使用しない理由はありますか?
- 24. NSFetchedResultsControllerエラー: 'NSInternalInconsistencyException'、理由: 'インデックス0のセクションのインデックス1のオブジェクトがありません'
- 25. java.lang.IndexOutOfBoundsExceptionの理由は何ですか:無効なインデックス0、サイズは0エラーコードですか?
- 26. PEAR - CLI経由でインストールする理由
- 27. ajax経由でjavascriptを渡し、PHPで処理します
- 28. JavaScriptでオブジェクトのプロトタイプを使用できない理由は? "isPrototypeOf"?
- 29. 0のORビット演算を使用する理由を放棄
- 30. JavaScriptで「0 === -0」がtrueになるのはなぜですか?
文字列でない限り、 '+ '演算子のオペランドは数値にキャストされます。 – hindmost
@hindmostは必ずしもそうではありませんが、十分に近いです。 –
@hindmost null + []は実際には" null "です。私はそれがかなり自由に多くの標準化されていると言うだろう –