1

コンソールにこれを入力するのはなぜですか:

{}.toString
{}.hasOwnProperty
{}....

SyntaxError をスローし、次のように入力します。

[].slice
[].filter
({}).toString
({}.toString)

しませんか?

配列とオブジェクトの違いは何ですか?

4

2 に答える 2

5

問題は{記号のあいまいさです。これを試して:

({}.toString())

パーサーが{}新しいステートメントの最初にあることを確認すると、どちらかを選択する必要があります

  • これはオブジェクトリテラルですか?
  • これはステートメントブロックですか?

常に 2 番目のステートメント ブロックが選択されます。したがって{}、空のステートメント ブロックであり、その.toString()直後は意味がありません。

あいまいさはありません[][ステートメントの先頭にある は、(式ステートメントの一部として) 配列リテラルの先頭にのみなることができます。functionただし、関数宣言ステートメントの開始と関数インスタンス化式の開始として 2 つの役割を果たしているキーワードにも同様の問題があります。

于 2013-01-03T17:30:32.677 に答える
1

コンソール では、オブジェクトではなくブロック ステートメント{}として扱われるためです。オブジェクトだと思わせるには、次のようにします。({})

({}).toString
于 2013-01-03T17:30:49.340 に答える