[解決済み] Javascriptで ",,," == Array(4) が使えるのはなぜですか?
2022-08-23 09:41:42
質問
インタープリタ/コンソールを起動し、以下の比較を試してみてください。
> ",,," == Array(4)
True
どうしてですか? 最初は、",,,"は4文字の配列で、終端スライスは' \0' と考えることができるので、それが理由かもしれないと思いましたが。
> "..." == Array(4)
"False"を返します。 それで...なぜですか? Javascriptのアヒルのタイピングのような特異なものであることは分かっていますが、この動作の根底にあるものが何であるかに興味があります。 Zed Shawの素晴らしい論文から得たものです。 プレゼンテーションから得たものです。 .
どのように解決するのですか?
右側のオペランドは文字列に変換されるため、文字列表現である
Array(4)
は
,,,
:
> Array(4).toString()
",,,"
配列のコンストラクタ関数を使って数値を渡すと、配列の長さがその数値に設定されます。つまり、4つの空のインデックスがあると言うことができます(同じように
[,,,]
のように)、配列のデフォルトの文字列表現は、その要素のカンマ区切りリストです。
> ['a','b','c'].toString()
"a,b,c"
比較がどのように行われるかは、セクション
11.9.3節に記載されています。
. そこでは、(
x == y
):
8. もしType( x ) が String または Number で、Type( y )はObjectです。
比較の結果を返す x == プリミティブ ( y ).
(配列はJavaScriptではオブジェクトです)
を辿っていくと
ToPrimitive
メソッドを追っていくと、最終的に
toString
.
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで2 == [2]になるのはなぜですか?
-
[解決済み] JSのDateからDay名
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?