あなたが知らないJS:undefinedとundeclared

1435 ワード

JavaScriptでよく見られるのはundefinedですが、undeclared(未声明)についてはよく分かりません.その二つはどのような関係がありますか?
typeofの役割
JavaScriptには7種類の内蔵タイプがあると知っています.文字列(string)、数字(number)、ブール値、オブジェクト(object)、配列ary、関数function)、空値(null)、未定義(undefined)、符号(smbol)
しかし、どのように変数のタイプを知っていますか?この時はtypeofを使います.
typeof作用:値の種類を確認します.戻りは値の種類です.
面白いことに、この7つのタイプとその文字列の値(上の7種類の括弧の中の英文)はそれぞれ対応していません.ここでは多く言わないで、直接に私達のテーマに入ります.
undefinedとundeclaredが馬鹿で分かりません.
多くの開発者はundefined(未定義)とundeclared(未声明)は同じで、違います.JavaScriptの中では全く同じではありません.
undefined:作用領域で宣言しましたが、値が与えられていない変数はundefined undeclaredです.作用領域で宣言されていない変数はundeclaredです.
undefinedはJavascriptの言語タイプの一つで、undefinedの変数にアクセスすると、ブラウザがエラーを出さずにundefinedに戻ります.undeclaredはJavascriptの中の文法エラーで、undeclaredの変数にアクセスすると、ブラウザがエラーとなり、JS実行が中断されます.
狂気の例1:
var a;
console.log(a); //undefined
console.log(b); //ReferenceError: b is not defined
上記の例では、「b is not defined」は「b is undefined」と誤解されやすいが、そうではない.「b is not defined」は「b is not found」または「b is not declared」に相当します.
私たちはコードを書く時によくこのようなエラーが発生します.もし初心者がデバッグに行く時、誤解されやすいです.b is not defined(bは定義されていません)は、何が定義されていませんか?作用領域で宣言されていますが、まだ与えられていない変数は、未定義です.しかし、この【consolie.logs(b)//ReferenceError:b is not defined】は間違った情報を出したが、bが未声明であるためである.
狂気の例2:
var a;
typeof a; //"undefined"
typeof b; //"undefined"
上記の例は人に疑惑を抱かせやすいです.なぜaはbは声明していません.それらの値の種類を調べた時に得られた結果は同じです.
bはundeclared変数ですが、typeof bはエラーを報告していません.