1

みんな。

数日前、インタビュアーから質問がありました。そして、私はそれに答えることができませんでした。このサイトには、いくつかの第一人者 JS が存在する可能性があります。=)

文字列は 1 つだけです。 は 1 文字のVARNAME[byte][byte][byte][byte] 場所[byte]です。

質問: 16 進数の [バイト][バイト] のペアが10 進数で 1000 を超えてはならない場合、どのように JS を正しく記述 しますか?

私は次のことを試しました

1)VARNAME[20][3D][09][30] 等しい

2)VARNAME<space>=1<space> そしてそれは正しいJSコードですが!

3) 0x203D = 825310 進数では、1000 以下でなければなりません 1000 以下でなければなり 0x0120 = 2352ません!

09 の 20 を置き換えてみたところ、次のようになりました。

0x093d = 2365それはもっと良いですが、1000以上=(

どのように私はそれを作ることができますか? インタビュアーは、char は任意の値を指定できるため、可能であると述べています(つまり、

varname;<space><space><space>など)しかし、彼は私に答えを言うことができません。

誰がそれを作ることができますか?

4

1 に答える 1

0

説明されている質問には答えがありません。

変数参照の後に式コンテキストに表示できる最小のコード ポイントは、ご\u0009指摘のとおり、1000 より大きい値 (>= 2304) になります。ECMAScript 5 仕様では、JavaScript 環境で無効な文字が検出されたときに初期エラーを生成する必要があります。ここで有効な唯一の文字は、識別子の継続文字、またはWhitespaceLineTerminatorCommentToken、およびDivPunctuatorのいずれかであるInputElementDivであり、いずれも範囲内のコード ポイントを許可しません。\u0000\u0003

\u0000a (C の文字列終了文字) が検出されたときに解析を終了する環境もありますが、これらの環境はこの点で ES5 に準拠していません。

JavaScript がこの位置に任意の文字を許可するという記述は、単に間違っています。

VARNAME が文字列または正規表現の場合、これはすべて変更されますが、どちらも\u0000-の範囲の文字を取ることができ\u0003ます。これがインタビュアーが探しているトリックである場合、それは不当な質問だったとしか言えません.

面接では、会社があなたに面接している以上に、あなたは会社に面接していることを忘れないでください。そのような質問を面接で使用するのに有効な質問と見なす会社に入社することについて、私は深刻な懸念を抱いています.

于 2013-10-18T16:52:41.137 に答える