JavaScript変数宣言の知識点

2688 ワード

先週の木曜日に昼食を食べて、leaderはJavaScriptのテーマを送って私たちに作ってくれました.私たちのチームの中にはフロントエンドを作ったり、バックグラウンドを作ったり、mobile webに座ったりしていました.だから、みんなのテーマに対する理解はそれぞれ違います.それからQQ討論グループで討論します.発見は基礎的だが、討論を通じて多くの収穫を得て、分かち合った.もちろん開発経験のある開発者から見れば、これらはJavaScriptを学ぶ最も基礎的なものです.普段はjQueryや第3 JSコンポーネントを使っているので、JavaScriptの基礎学習はあまり重視されていません.2回alertでそれぞれどんな結果を出力しますか?
 
  
type="text/javascript"> <br>    var a = 1; <br>    var a; <br>    alert(typeof a); <p></p> <p>    (function () {<br>        b = '-----';<br>        var b;        <br>    })();<br>    alert( typeof b);<br>

私の答えは:1.undefined 2.undefined.そしてリーダーは質問の答えをもう一度よく考えてみましょう.私のテーマの分析:
1.aを宣言して1に値を割り当て、aを再宣言しますが、この場合は値が割り当てられていません.変数のデフォルト値はundefinedである必要があります.
2.b変数は関数内で局所変数であり、alert内で出力されるのはグローバル変数bであるためundefiendである.
私はChromeでコードを実行しました.コードが正しい結果は1です.number 2.undefined.ここではJavaScriptの変数宣言先行概念を考察する.
次のような別の例を見てみましょう.
 
  
test();

function test(){
    alert("Hello World!");
}


プログラムは間違っていません.ただ、実行結果は:Hello World!です.原理:コンピュータは文の実行を開始する前に、すべてのfunction定義を検索し、関連するfunctionを保存します.
第1題:
var a = 1;
var a;
2行目の宣言変数aは、上部でaを宣言したことに相当し、最初の文はaを再宣言し、1に値を付与する.だからtypeof aはnumber
第2題:
b = '-----';
var b;
第2題の解析:b='----'、プログラムはまずコンテキストに変数bの声明があるかどうかを探して、もしあるならば、直接'----'に値を割り当てます.しかしalert(typeof b);関数の外に出力されるグローバル変数bであり、すべてundefinedである.
変数の付与操作は事前に行われていないことに注意してください.
次に、次のコード・セグメントを参照します.
 
  
<br>name="aaa"; <br>function test(){ <br>    alert(typeof name); <br> <br>    var name="bbb"; <br>    alert(typeof name); <br>} <br>test(); <br>

結果を書いてください.
解析は、次のコード・セグメントで記述できます.
 
  
name="aaa";
function test(){
    alert(typeof name);// name , 。 , undefined
    var name="bbb";//
    alert(typeof name);//string
}
test();

しかし、次のコードセグメントでは、実行結果は何ですか?
 
  
<br>alert(typeof name); <br>var name="hello world"; <br>alert(typeof name); <br>

プログラムの実行結果はstring,stringです.ここでめまいがして、どのように分析して説明するか分かりません.表明上は変数宣言を早めに理解したと思いますが、学習方法で上のコードセグメントを分析すると、間違った結果が得られます.では、変数の付与は、関数の外部(グローバル変数)と関数の内部(ローカル変数)と関係がありますか?