コンソールにこれを入力するのはなぜですか:
{}.toString
{}.hasOwnProperty
{}....
SyntaxError をスローし、次のように入力します。
[].slice
[].filter
({}).toString
({}.toString)
しませんか?
配列とオブジェクトの違いは何ですか?
コンソールにこれを入力するのはなぜですか:
{}.toString
{}.hasOwnProperty
{}....
SyntaxError をスローし、次のように入力します。
[].slice
[].filter
({}).toString
({}.toString)
しませんか?
配列とオブジェクトの違いは何ですか?
問題は{
記号のあいまいさです。これを試して:
({}.toString())
パーサーが{}
新しいステートメントの最初にあることを確認すると、どちらかを選択する必要があります
常に 2 番目のステートメント ブロックが選択されます。したがって{}
、空のステートメント ブロックであり、その.toString()
直後は意味がありません。
あいまいさはありません[]
—[
ステートメントの先頭にある は、(式ステートメントの一部として) 配列リテラルの先頭にのみなることができます。function
ただし、関数宣言ステートメントの開始と関数インスタンス化式の開始として 2 つの役割を果たしているキーワードにも同様の問題があります。
コンソール では、オブジェクトではなくブロック ステートメント{}
として扱われるためです。オブジェクトだと思わせるには、次のようにします。({})
({}).toString