前提
JavaScriptの値のイミュータブルについて疑問が出ました。
質問したいこと
以下はdevツールのコンソールに1を2回入力したものです。
AとBは別々の値(数値リテラル)としてnumber型の1が2つ生成されているという認識であっておりますでしょうか?
また別々の値ということを確認する具体的な方法などがあれば
ご教授いただければ幸いです。
自分で調査したこと
devツールで確認できないか色々なタブを見て回りましたが
それらしき箇所が見つけられませんでした。
test.js
1let a = 1+1 2console.log(a) // 2
↑の2は新しく生成されているということは検索していて理解できました。
その他ネット上、書籍などで上記に当てはまる具体例が
確認できなかったので質問させていただきました。
何を別の値と表現しているのかわかりませんが、同じ手順で 1 を入力した後に 2 を入力すれば、その 1 と 2 は別の値ですか?
ちなみに「値」という用語は日常用語ではありません。JavaScript の用語で言うならば、1 と 1(あるいは "1" と "1")は同じ値です。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/is
わかりにくい表現失礼いたしました。
>同じ手順で 1 を入力した後に 2 を入力すれば、その 1 と 2 は別の値ですか?
私としては別の値だという認識です。
また参考ページありがとうございました。
参考ページにある以下の左のfooと右のfooは別々の文字列リテラルとしてPCやブラウザは解釈している,
メモリ上で管理しているという認識であっていますでしょうか?
Object.is('foo', 'foo');
こう考えた理由としては参考ページのリンク先の
https://developer.mozilla.org/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness#strict_equality_using
こちらの書き出しに「厳格な等価性は、2 つの値が等しいか比較します。」という文があったためです。
繰り返しますが、同じ値です。
JavaScript にはプリミティブ型とそうでないもの (名前がよく分かりませんが、オブジェクト型?) があって、プリミティブ型は値が同じならそれ以上の区別はないけど、オブジェクト型は異なるオブジェクトが同じ値を持つこともある、というあたりをまず押さえておく必要があるかと…。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#data_structures_and_types
>繰り返しますが、同じ値です。
同じ値ということで了解いたしました。ありがとうございます。
>プリミティブ型は値が同じならそれ以上の区別はない
参考ページありがとうございます。確認してみます。
回答1件
あなたの回答
tips
プレビュー
