というのは、この記事を書いているときに百度で情報を探していたところ、庭友達の記事を見つけたので、とてもよく書かれていたのですが、書いた後で諦めたくなかったので、いろいろ参考にさせていただきました。それから! ~~
[翻訳] JavaScript Scoping and Hoisting
ご理解のほどよろしくお願いいたします。
1 つ。犯罪現場
まず、非常に単純なコードを見てみましょう:
var v='Hello World';
alert(v);
これについては疑いの余地なく、「Hello World」が表示されます。 。はい、続けましょう。
コードの一部を調べています:
var v='Hello World';
(function(){
alert(v);
})()
実行後、予想どおり、「Hello World」が表示されます。
さて、ここからが楽しい部分です。次に、次のコードを確認します。
var v=' Hello World';
(function(){
alert(v);
var v='愛してる';
})()
これは面接の質問です。面接官は結果はどうですかと尋ねます。どう答えますか?
まずは結果を見てみましょう!
わかりました、神秘的になろうとするつもりはありません。実は、ここに罠が隠されています - JavaScript の変数ホイスティング (ホイスティング)
2.徹底した分析
それでは、プロモーションとは何かを説明しましょう。その名の通り、下にあるものを上に持ち上げるという意味です。 JSでは、後ろで定義したもの(変数や関数)を前の定義に昇格させることです。
改善点を説明する前に、まず js のスコープの問題を見てみましょう。
スコープは、JavaScript 初心者にとって最も混乱する部分の 1 つです。実際、初心者だけでなく、スコープを完全に理解できない経験豊富な JavaScript プログラマーにもたくさん会いました。 JavaScript のスコープが非常に複雑である理由は、JavaScript が C 言語ファミリーのメンバーに非常によく似ているためです。次の C プログラムを見てください:
#include
int main() {
int x = 1; // 1
if (1) ) {
int x = 2;
printf("%d, ", x) // 2
}
printf("%dn", x); }
if (true) {
console.log(x); 🎜> }
console.log(x);// 2
このコードでは、Firebug は 1、2、2 を表示します。これは、JavaScript には関数レベルのスコープがあるためです。これは C ベースの言語とはまったく異なります。 if ステートメントと同様、ブロックは新しいスコープを作成しません。新しいスコープを作成するのは関数のみです。
コードをコピーします
var x = 2;
// 他のコード
}());
}
// x は 1 のままです。
}
この側面は非常に柔軟であり、ブロック内だけでなく、一時的なスコープを作成する必要があるどこでも使用できます。ただし、時間をかけて JavaScript のスコープを理解することを強くお勧めします。これは本当に強力で、この言語の私のお気に入りの機能の 1 つです。スコーピングをよく理解するとホイスティングも理解しやすくなります。
2.1 変数の昇格
変数の昇格は非常に簡単で、変数を関数の先頭に持ち上げることです。説明する必要があるのは、変数のプロモーションは変数の宣言のみをプロモートし、代入はプロモートしないということです。
例:
3 つの変数を定義します:
(function(){
var a='One';
var b='Two';
var c='Three';
} )()
実際には次のようになります:
(function(){
var a,b,c;
a='One';
b='Two';
c= 'Three';
})()
この時点で変数が発生します。
それでは、最初のコードに戻りましょう。エラーが報告されるのはなぜですか?実際、上記の変数プロモーションのオリジナルと js のスコープ (ブロックレベルのスコープ) に基づいた分析によれば、上記のコードは実際には次のようになります。
var v='Hello World';
(function(){
var v;
alert(v) ;
v='I love you';
})()
プロンプトに「未定義」と表示されるのはそのためです。
ここから、JS コードを記述するときは、上で示した例 var a, b, c; のように、ブロックレベルのスコープの先頭に変数を置く必要があることも学びました。事故を防ぎます。
2.2 機能のリフティング
機能のリフティングとは、機能全体を前面に押し出すことです。
jsコードを書く場合、関数表現と関数宣言の2つの書き方があります。ホイストできるのは関数宣言フォームのみであることに注意することが重要です。
関数宣言方法の改善 [成功]
foo();
function foo(){
alert("私は foo からです");
}
myTest() ;
var foo =function foo(){
alert("I am from foo");
}
}
myTest();
結果は次のとおりです:
左側でエラーが報告されました。あなたに嘘はありません。
ははは。 。
今後とも Beta Rabbit をよろしくお願いいたします
作者: Lanny☆Lan Dongcai

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール

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