これら 2 つの違いは何ですか?また、上記の状況の理由は何ですか?それを理解するのを手伝ってください
欢迎选择我的课程,让我们一起见证您的进步~~
エラーを報告していませんか? コンソール情報を確認してくださいobj.arr[i] この呼び出しは間違っていますobj.arr は存在しません、それは未定義と同等ですunknown[i] 間違いなくエラーが発生します
まず第一に、obj と arr はどちらも [] メソッドを使用して値を取得できます: この例の 2 つのメソッドの違いは次のとおりです: obj[arr[i]] は最初に arr[i] を取得し、それを次の値に割り当てます。オブジェクト[]:
obj.arr.[i] は、最初に obj.arr を取得し、次に obj.arr:
角かっこ演算子は、文字列変数の内容を属性名として使用できます。ドット演算子はできません。
1 つはオブジェクト、もう 1 つは配列であり、これらは 2 つの完全に異なるデータ構造です
オブジェクトのトラバースが使用可能です
後でエラーが報告されないと言った理由については、for ループの 3 つの式 (セミコロンで区切られた 3 つ) が原因で、obj.length が未定義で false であるため、ループが開始されません。 、obj を与えることもできます。オブジェクトに長さを追加してみてください。サイクルが始まります
友人、エラーが報告されました...理由は次のとおりです: obj[] を使用して、受信文字列を属性名に変換します。つまり: obj['name']==obj.name が返されます。 trueそして、obj.'name' のドット構文は obj.name に自動的に変換されません。つまり、 obj.'name'==obj.name エラー 正しく理解できているかわかりません。 .
オペレーター優先で間違いなくエラーが報告されます
入れ子は内側から外側へチェーンは左から右へこの文は正しいです!
エラーを報告していませんか? コンソール情報を確認してください
obj.arr[i] この呼び出しは間違っています
obj.arr は存在しません、それは未定義と同等です
unknown[i] 間違いなくエラーが発生します
まず第一に、obj と arr はどちらも [] メソッドを使用して値を取得できます:
リーリーこの例の 2 つのメソッドの違いは次のとおりです:
obj[arr[i]] は最初に arr[i] を取得し、それを次の値に割り当てます。オブジェクト[]:
obj.arr.[i] は、最初に obj.arr を取得し、次に obj.arr:
を通じて [i] を取得します。 リーリー リーリー角かっこ演算子は、文字列変数の内容を属性名として使用できます。ドット演算子はできません。
リーリー1 つはオブジェクト、もう 1 つは配列であり、これらは 2 つの完全に異なるデータ構造です
オブジェクトのトラバースが使用可能です
リーリー後でエラーが報告されないと言った理由については、for ループの 3 つの式 (セミコロンで区切られた 3 つ) が原因で、obj.length が未定義で false であるため、ループが開始されません。 、obj を与えることもできます。オブジェクトに長さを追加してみてください。サイクルが始まります
友人、エラーが報告されました...
理由は次のとおりです:
obj[] を使用して、受信文字列を属性名に変換します。つまり:
obj['name']==obj.name が返されます。 true
そして、obj.'name' のドット構文は obj.name に自動的に変換されません。つまり、
obj.'name'==obj.name エラー
正しく理解できているかわかりません。 .
オペレーター優先で間違いなくエラーが報告されます
入れ子は内側から外側へ
チェーンは左から右へ
この文は正しいです!