質問するログイン新規登録

回答編集履歴

1

誤字とちょっとした箇所の修正

2019/03/11 15:11

投稿

miyabi-sun
miyabi-sun

スコア21596

answer CHANGED
@@ -1,9 +1,8 @@
1
1
  JavaScriptのエンジン部分はブラウザ作ってる各社が勝手に実装しているのですが、
2
- W3Cという団体が出しているECMAScriptサイトに厳密な挙動の仕様が明記されており、
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
- Number型とString型を`==`で比較した場合、String型の方をToNumberを行いNumber型へ型変換を行ってから改めて比較とい事を行っています。
34
+ この記述自体は`==`のものすが、String型ToNumberを行うものと
35
+ ここでもToNumberが出てきました。
36
+ そして、そのロジックは`(+値)`としたものと同様です。
37
37
 
38
- そのロジックは`(+値)`としたものと同様です。
39
-
40
38
  ```JavaScript
41
39
  console.log(+""); // 0
42
40
  console.log(+"10"); // 10