0

次のコードを検討してください。

//the var Test has NOT been declared yet

console.log((typeof Test)); // "undefined"
console.log(Test); //"Uncaught ReferenceError: Test is not defined"

2 番目の console.log ステートメントで ReferenceError がスローされ、最初のステートメントで undefined が表示されるのはなぜですか。

4

1 に答える 1

5

テストが定義されていないためです。

最初console.logに、システムに変数の型を教えてもらいます。したがって、現在のスコープチェーンを調べてその変数への参照を見つけ、その型を推測できるようにします。

変数が見つからない場合は、undefinedプリミティブを受け取ります。あなたが推測したと確信しているように、これは の型を持っていますundefined

2 回目は、未定義の変数の値を出力するように要求しています。変数が定義されていない (現在のスコープ チェーンに変数への参照がない) ため、これは、その型を推測するだけでなく、存在しない ACCESS DATA にアクセスしようとしているエラーです。

于 2014-03-10T01:17:49.800 に答える