2017-05-04 2 views
2

今日、私は奇妙な構文の問題を抱えていて、何か奇妙なことに気付きました。これは実際に有効なJSとしてコンパイルされます。なぜこのJavaScriptは有効ですか?

confusing: { thisWorks: 'why?' } 

これはコンソールに「理由」を表示します。

なぜでしょうか?

また、このような機能でそれをラップすることができます:

// calling myFunc() returns undefined 
const myFunc =() => { 
    confusing: { thisWorks: 'why?' } 
}; 

は、私はちょうど前に遭遇したことがありませんJSのいくつかのコーナーでなければなりませんか?正しいものではない構文から生じる奇妙な振る舞いのようですが、実際にはエラーは発生しません。

+0

簡潔に:ブロック、ラベル、セミコロンの省略。 – Bergi

+3

[ラベル](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label)と[ブロック](https://developer.mozilla.org/en-US)です。/docs/Web/JavaScript /リファレンス/ステートメント/ブロック)。 – Xufox

+0

http://stackoverflow.com/questions/13588747/uncaught-syntaxerror-unexpected-token/私が見つけた最高の重複候補です – Bergi

答えて

1

大丈夫です。なぜこの文が理解できれば

thisWorks: 'why?' 

は 'なぜ?'を出力します。そうでない場合は読み - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

次へ]をあなたは、なぜこの文

{ thisWorks: 'why?'; } 

出力理解できる場合は、 'なぜ?'。なぜこの文がなぜ返されるのか理解できない理由はないはずです。理由は何ですか?ここではconfusingthisWorksの両方がラベルです。

+0

意味があります!ヤセールの説明をありがとう。 –

+0

あなたは大歓迎です:) – Yasser

関連する問題