編集者は、この質問が 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 のスコープを理解するのに役立つことを願っています。

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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