インタビューの質問 console.log(([][[]] [])[ !![]] ([] {})[ !![] !![]]) 出力何?面接中にこの面接の質問に遭遇しました。面接の質問は型変換、暗黙的な型変換、演算子などについて調べたものでした。答えることができませんでした。答え方がわからないわけではありません。めまいがしただけです。質問を読んでいるだけです。ただし、面接の質問ですので、ぜひ解いてみてください。
#この問題を解決するには知識が必要です最初に実行します([][[]] []) , まず [][[]]
内の
[][[]] を実行します。
[][[]]
の値 まず、JavaScript エンジンは空の配列
[]次に、エンジンは、プロパティ名として
[] を使用して、空の配列のプロパティにアクセスしようとします。この場合、
[] 自体は配列であるため、JavaScript エンジンはそれを文字列に変換しようとします。
[] は空の配列であるため、文字列に変換した結果は空の文字列
""最後に、エンジンは空の配列内の
"" という名前のプロパティへのアクセスを試みます。このプロパティは空の配列には存在しないため、結果は
unnamedしたがって、
[][[]] の実行結果は
unknown
その後、
([][[]] [])次の実行は
(unknown []) で暗黙的な型変換が実行され、
Convert unknown を文字列
"unknown" に変換し、[] を "" に変換して、2 つの文字列を結合します。したがって、結果は
"unknown"
になります。その後、[!![]] を実行すると、!![] 空の配列がブール値 true に変換されます。単項演算は数値に変換されます。true は
true を数値
1 に変換します。結果は
[1] です。したがって、
([][[]] [])[ !![]] は
unknown[1] を取得できます。この結果は、文字列
'n' になります。
次のステップは、
([] {})[ !![] !![]]
まず
([] {}) を実行し、
[] {} を計算します。これにより、暗黙的な型変換がトリガーされ、空のオブジェクトが文字列
"[object Object]" に変換され、2 つの文字列が連結されます。したがって、結果は
'[オブジェクト オブジェクト]'
[!![] !![]]を再度実行します。
!![]解析後の結果は1なので、この部分を実行すると、 get は値 1 を
1 1 に加算することで、結果は
[2]
結合された 2 つの部分は
'[object Object]'[2]
#最後に、前段で得られた結果 'n'
と後段で得られた結果 'b'
を加算して、最終結果 'nb を取得します。 '
要約: この問題が当面解決できない場合は、いくつかの理由が考えられます。1 つ目は、実行順序が明確でないこと、2 つ目は、実行順序が明確でないことです。 clear.[][[]]
これは実際には、キー []
を持つ空の配列の値を取得するためのものであり、配列のキーは文字列であるため、[]
は ''# に変換されます。 ## が見つからないため、未定義が返されます。あなたは今、この面接の質問を知っていますか?
Web フロントエンド開発ビデオ チュートリアル 」
以上が気絶!インタビューの質問 console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) は何を出力しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。