JavaScript 変数のscope_javascript スキルに関する面接の質問
編集者は、この質問が JavaScript の範囲を理解するのに非常に役立つと感じたので、他の人に役立つことを願って、私自身の問題解決のアイデアを再度整理しました。
まずは面接の質問を見てみましょう:
var arr = [1, 2, 3]; for (var i = 0, j; j = arr[i++];) { console.log(j); } console.log('---------'); console.log(i); console.log('---------'); console.log(j); console.log('---------');
問題を解決する前に、まず JavaScript の変数フィールドに関連する知識を確認しましょう。
グローバル変数 (グローバル)
グローバル変数とは、どこからでもアクセスできる変数を指します。
var キーワードを使用するかどうかに関係なく、関数の外で宣言されています
var キーワードを使用せずに関数内で宣言します。当然、宣言されたステートメントは実行される必要があります
ローカル変数 (ローカル)
ローカル変数は、宣言された関数内でのみアクセスできます
関数内で宣言され、var キーワード
を使用します。
2つの注意点
まずコードを見てください:
alert(i); // 输出 undefined for (var i = 0; i < 1; i++){}; alert(i); // 输出1
JavaScript にはステートメントのスコープがありません。ステートメント内で定義された変数はステートメントの外側に広がります。この例では、i は for ステートメントの中で宣言されていますが、for ステートメントの外側でもアクセスできます。
i は for ステートメントの前でアクセスできますが、まだ割り当てられていません
問題解決を始めましょう
i++ は i が使用された後に追加されます:
初めて実行すると、j=arr[0]、次に i=1、console.log(j) は 1 を出力します
2 回目の実行では、j=arr[1]、次に i=2、ocnsole.log(j) は 2 を出力します
3 回目の実行では、j=arr[2]、次に i=3、ocnsole.log(j) は 3 を出力します
4 回目 (for 条件を満たさない)、j=arr[3] が未定義、その後 i=4、ocnsole.log(j) は出力がなく、for ループを終了します
for ステートメントの実行後、console.log(i) は上記の分析から 4 を出力し、console.log(j) は未定義を出力します
最終的な出力結果は次のとおりです:
2 --------- --------- undefined ---------
誰もが上記の分析と結果を理解したはずです。その後、推論を始めることができます。
質問を借用し、質問を 1 つ変更します
タイトル:
var arr = [1, 2, 3];
for (var i = 0, j; j = arr[++i];) { console.log(j); } console.log('---------'); console.log(i); console.log('---------'); console.log(j); console.log('---------');
答え:
2 3 --------- 3 --------- undefined ---------
質問を借用し、質問 2 を修正しました
タイトル:
function xxx() { var arr = [1, 2, 3]; for (var i = 0, j; j = arr[i++];) { console.log(j); } } xxx(); console.log('---------'); console.log(i); console.log('---------'); console.log(j); console.log('---------');
答え:
1 2 3 --------- 报错:Uncaught ReferenceError: i is not defined
これをあなたに共有します。JavaScript のスコープを理解するのに役立つことを願っています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
