ちなみに、注意:
字句スコープ: 変数のスコープは、実行時ではなく定義時に決定されます。つまり、字句スコープはソース コードに依存し、静的を通じて決定できます。したがって、字句スコープは静的スコープとも呼ばれます。 withとevalを除けば、JSのスコープ機構は字句スコープ(Lexicalscope)に非常に近いとしか言えません。
次に、グローバル変数を使用した簡単なクロージャーの例を示します。
var sWord="こんにちは。Web フロントエンド開発エンジニアのブログへようこそ。アドバイスをお願いします。
function disWord(){
alert(sWord) ;
}
disWord();
分析: スクリプトがメモリにロードされるとき、disWord は sWord の値を計算しませんが、関数の実行時に sWord の計算を実行します。 disWordと呼ばれます。
次に、別の関数を定義する関数内のクロージャの例を示します。
var iNum=10;
function add(num1,num2){
function doAdd(){return num1 num2 iNum;}
return doAdd( );
}
分析: 内部関数 doAdd は、受信パラメーター num1、num2 の値を取得しますが、グローバル変数 iNum はパラメーターを受け入れません。追加の最後のステップでは doAdd を呼び出します。2 つのパラメータとグローバル変数 iNum を取得して、doAdd で使用される値が実行環境で取得されることがわかります。
以下は、字句範囲とクロージャーを理解した、インターネット上にあるいくつかの例です
、ケース 1
/*グローバル (ウィンドウ) ドメイン下のコード*/
function a(i) {
var i ;
alert(i);
a(10);
質問: 上記のコードは何を出力しますか?
答え: 10.
具体的な実行プロセス
a 関数には仮引数 i があり、a 関数を呼び出す際に実引数 10 が渡され、仮引数 i=10 となります。
次に、ローカル変数 i を定義します。同じ名前で値が割り当てられていません
alert 出力 10
考察: ローカル変数 i と仮パラメータ i は同じ記憶領域ですか?
、ケース 2
2 function a(i) {
3 alter(i); //arguments[0];仮パラメータ i
5 var i = 2;
7 alter(arguments[0]);
9 a(10); ;
質問: 上記のコードは何を出力しますか?
答え: 10,10,2,2
具体的な実行プロセス
最初のアラートは、仮パラメータ i の値 10 を出力します。
2 番目のアラートは、arguments[0] を出力します。これも i である必要があります
次にローカル変数 i を定義し、代入される値は 2 です。このとき、ローカル変数 i=2
3 番目のアラートはローカル変数 i の値 2 を出力します。
4 番目のアラートは引数 a[ 0] もう一度
考え: これで局所変数 i と仮パラメータ i の値は同じですか?
、ケース 3
コードをコピー
質問: 上記のコードは何を出力しますか?
答え: 10
具体的な実行プロセス
最初の文は、仮パラメータ i と同じ名前のローカル変数 i を宣言しています。結果によれば、後の i は
を指していることがわかります。仮パラメータ i なので、ここでは、仮パラメータ i の値 10 をローカル変数 i に代入するのと同じです
考え方: ケース 2 と組み合わせると、これは基本的に、ローカル変数 i と仮パラメータ i は同じストア アドレスを指しています。
、ケース 4
コードをコピーします
質問: 上記のコードは何を出力しますか?
答え: 未定義、2
特定の実行プロセス
最初のアラートは未定義を出力
2 番目のアラートは 2 を出力
考え: 何が起こっているのでしょうか?
上記の例を見て、どのように実装すればよいか疑問に思うかもしれません。実装の詳細は何ですか? JSエンジンはどのように動作するのでしょうか?
解析プロセス
、実行シーケンス
コンパイル言語。コンパイル手順は、字句解析、構文解析、意味チェック、コードの最適化、バイト生成に分かれています。
インタープリタ型言語では、字句解析と構文解析を通じて構文解析ツリーを取得した後、解釈と実行を開始できます。ここでは、解析プロセスに関する簡単かつ独自の原理を示します。詳細な解析プロセス (さまざまな JS エンジンが異なります) については、さらなる検討が必要です。
ドキュメント ストリームに複数のスクリプト コードが含まれている場合。
ステップ 1. 最初のコードセグメントを読み取ります (JS 実行エンジンはプログラムを 1 行ずつ実行しませんが、解析されて実行されます)。
ステップ 2. 字句解析と構文解析を実行します。エラーがある場合は、構文エラー (括弧の不一致など) が報告され、ステップ 5 に進みます。
ステップ 3. 修正します。 [var ]変数と[function]定義は「事前解析」されます (正しい宣言のみが解析されるため、エラーは報告されません)
ステップ 4. コードセグメントを実行します。コードセグメントがあればエラーが報告されます。エラー (変数が未定義など)
ステップ 5. 別のコード セグメントがある場合は、次のコード セグメントを読み取り、ステップ 2 を繰り返します
ステップ 6. 終了
、特別な命令
すべての JSグローバル ドメイン (ウィンドウ) ドメイン内のコードを表示できます。これは自動的に実行される「匿名メソッド」ですが、この「匿名メソッド」内の他のメソッドは明示的に
と呼ばれた場合にのみ実行されます。主要な手順
上記のプロセスは、主に 2 つの段階に分かれています。
解析: 構文解析と事前解析を通じて、正当な構文解析ツリーを構築します。
実行: 特定の関数を実行します。JS エンジンが各関数インスタンスを実行すると、実行環境 (ExecutionContext) とアクティブ オブジェクト (activeObject) が作成されます (これらはホスト オブジェクトに属し、オブジェクトのライフ サイクルと一致します)。関数インスタンス) )
より詳細な分析資料の例は次のとおりです: http://www.jb51.net/article/24547.htm

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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