回答編集履歴
1
誤字とちょっとした箇所の修正
answer
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
JavaScriptのエンジン部分はブラウザ作ってる各社が勝手に実装しているのですが、
|
|
2
|
-
|
|
2
|
+
「ECMA TC39 委員会」という団体のECMAScriptで厳密な挙動の仕様が明記されており、
|
|
3
3
|
ECMAScriptを読めば型変換等のルールも明記してあるので探せば出てくるはずです。
|
|
4
4
|
|
|
5
5
|
しかし面倒くさいのでMDNの中で探します。
|
|
6
|
-
|
|
7
6
|
[関係演算子セクション - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Relational_operators)
|
|
8
7
|
|
|
9
8
|
> これらの演算子はそれぞれ、比較前に各オペランドに対して `valueOf()` 関数を呼び出します。
|
|
@@ -32,11 +31,10 @@
|
|
|
32
31
|
これはMDNに記述されていました。
|
|
33
32
|
[== による緩い等価性 - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using)
|
|
34
33
|
|
|
35
|
-
`==`で値を比較した場合、二次元のまとめに書いてあるようなルールに従って比較が行われます。
|
|
36
|
-
|
|
34
|
+
この記述自体は`==`のものですが、String型はToNumberを行うものとする。
|
|
35
|
+
ここでもToNumberが出てきました。
|
|
36
|
+
そして、そのロジックは`(+値)`としたものと同様です。
|
|
37
37
|
|
|
38
|
-
そのロジックは`(+値)`としたものと同様です。
|
|
39
|
-
|
|
40
38
|
```JavaScript
|
|
41
39
|
console.log(+""); // 0
|
|
42
40
|
console.log(+"10"); // 10
|