JavaScript変数のスコープに関するインタビューの問題
6531 ワード
ShinneJaieオリジナル、転載は出所を明記してください.
昨日の夜、ある交流グループの中で、あるネット友達が彼の面接問題を提出していました.ちょうど私も見ました.この問題について考えてみました.この問題はJavaScriptの役割領域を理解するのに役立つと思います.特にここで自分の問題を整理して、他の人に助けてもらいたいです.
まず次の問題を見ます.
問題を解く前に、まずJavaScriptの変数領域に関する知識を振り返ってみます.
グローバル変数(Global)
グローバル変数とは、どこでもアクセスできる変数のことで、2つの場合があります. functionの外で宣言します. var キーワード functionでは、使用しません. var キーワードはもちろん、ステートメントのステートメントが実行されなければなりません.
ローカル変数(Local) )
ローカル変数は宣言されたfunctionの内部にのみアクセスできます. functionで宣言し、使用する. var キーワード 2時の注意点
コードを先に見ます JavaScriptは文の作用領域が存在しません.文の中で定義された変数は文の外に拡散します.例のiはfor文で宣言しますが、for文の外ではそのまま にアクセスできます.は、for文の前にiにアクセスできますが、まだ に割り当てられていません.
私たちの問題を始めます.
i++はiを使用した後、追加されます.
初めて実行した場合は、j=arr[0]、その後i=1、consolue.log(j)が1を出力します.
2回目の実行時は、j=arr[1],その後i=2,ocnsole.log(j)出力2
3回目の実行時は、j=arr[2],その後i=3,ocnsole.log(j)出力3
第四回(該当しないfor) 条件)、j=arr[3]はundefinedで、その後i=4、ocnsole.log(j)は出力されず、forサイクルを終了します.
for文の実行が完了したら、consolie.logl(i)は上の分析で出力4、consolie.logl(j)はundefinedを出力します.
最後の出力結果は:
問題を借りて題を直す
タイトル:
タイトル:
昨日の夜、ある交流グループの中で、あるネット友達が彼の面接問題を提出していました.ちょうど私も見ました.この問題について考えてみました.この問題はJavaScriptの役割領域を理解するのに役立つと思います.特にここで自分の問題を整理して、他の人に助けてもらいたいです.
まず次の問題を見ます.
1 var arr = [1, 2, 3]; 2 for (var i = 0, j; j = arr[i++];) { 3 console.log(j); 4 } 5
6 console.log('---------'); 7 console.log(i); 8 console.log('---------'); 9 console.log(j); 10 console.log('---------');
問題を解く前に、まずJavaScriptの変数領域に関する知識を振り返ってみます.
グローバル変数(Global)
グローバル変数とは、どこでもアクセスできる変数のことで、2つの場合があります.
ローカル変数(Local) )
ローカル変数は宣言されたfunctionの内部にのみアクセスできます.
コードを先に見ます
1 alert(i); // undefined
2
3 for (var i = 0; i < 1; i++){};
4
5 alert(i); // 1
私たちの問題を始めます.
i++はiを使用した後、追加されます.
初めて実行した場合は、j=arr[0]、その後i=1、consolue.log(j)が1を出力します.
2回目の実行時は、j=arr[1],その後i=2,ocnsole.log(j)出力2
3回目の実行時は、j=arr[2],その後i=3,ocnsole.log(j)出力3
第四回(該当しないfor) 条件)、j=arr[3]はundefinedで、その後i=4、ocnsole.log(j)は出力されず、forサイクルを終了します.
for文の実行が完了したら、consolie.logl(i)は上の分析で出力4、consolie.logl(j)はundefinedを出力します.
最後の出力結果は:
1
2
3
---------
4
---------
undefined
---------
上の分析と結果については、皆さんはもう分かりましたよね.問題を借りて題を直す
タイトル:
1 var arr = [1, 2, 3]; 2 for (var i = 0, j; j = arr[++i];) { 3 console.log(j); 4 } 5
6 console.log('---------'); 7 console.log(i); 8 console.log('---------'); 9 console.log(j); 10 console.log('---------');
答え:1 2 2 3 3 --------- 4 3 5 --------- 6 undefined 7 ---------
問題を借りて2題を直すタイトル:
1 function xxx() { 2 var arr = [1, 2, 3]; 3 for (var i = 0, j; j = arr[i++];) { 4 console.log(j); 5 } 6 } 7 xxx(); 8
9 console.log('---------'); 10 console.log(i); 11 console.log('---------'); 12 console.log(j); 13 console.log('---------');
答え:1
2
3
--------- :Uncaught ReferenceError: i is not defined