ホームページ >ウェブフロントエンド >jsチュートリアル >javascript_javascript スキルにおける混同されやすいいくつかの概念のまとめ
1.
var name = "The Window"; var object = { name : "My Object", getName: function(){ return this.name; } };
ここでの getName() メソッドは単に this.name の値を返します。 object.getName()
を呼び出すいくつかの方法を次に示します。
方法とそれぞれの結果。
object.getName(); //「私のオブジェクト」
(object.getName)() //「私のオブジェクト」
(object.getName = object.getName)(); //「ウィンドウ」、非厳密モード
3 番目のケース (object.getName=object.getName); var fn=(object.getName=object.getName);fn();
と同等2.
function outputNumbers(count){ for (var i=0; i < count; i++){ //alert(i); } var i; //重新声明变量 alert(i); //计数 } outputNumbers(5);
JavaScript は同じ変数を複数回宣言しても通知しません。その場合、後続の宣言は無視されます。
を参照してください (ただし、後続の宣言では変数の初期化が実行されます)。匿名関数を使用すると、ブロックレベルのスコープを模倣し、この問題を回避できます。
3.
function(){ //这里是块级作用域 }(); //出错!
JavaScript は function キーワードを関数宣言の始まりとして扱い、関数
を処理するため、このコードは構文エラーを引き起こします。
数値宣言の後に括弧を続けることはできません。ただし、関数式の後に括弧を続けることはできます。関数宣言を関数式に変換するには、
以下のように括弧を追加するだけです。
(function(){ //这里是块级作用域 })();
4.
function outputNumbers(count){ (function () { for (var i=0; i < count; i++){ alert(i); } })(); alert(i); //导致一个错误! }
この書き換えられたoutputNumbers()関数では、forループの外側にプライベートスコープを挿入します。匿名
関数内で定義された変数は実行の終了時に破棄されます。したがって、変数 i はループ内でのみ使用でき、使用後は破棄されます。
この匿名関数はクロージャであり、包含スコープ内の
にアクセスできるため、変数 count はプライベート スコープでアクセスできます。
すべての変数。
この手法は、グローバル スコープへの変数や関数の追加が多すぎることを制限するために、グローバル スコープの関数の外でよく使用されます。
一般的に言えば、グローバル スコープに追加する変数と関数はできるだけ少なくする必要があります。多くの開発者が関与する大規模な
プロジェクト内
アプリケーションでは、グローバル変数や関数が多すぎると、簡単に名前の競合が発生する可能性があります。プライベート スコープを作成することで、各開発者は次のことができます
グローバル スコープを台無しにすることを心配せずに独自の変数を使用できます。例:
(function(){ var now = new Date(); if (now.getMonth() == 0 && now.getDate() == 1){ alert("Happy new year!"); } })();
上記のコードをグローバル スコープに配置します。これは、1 月 1 日がどの日であるかを判断するために使用できます。この日になると、その日が使用されます。
ユーザーは新年の挨拶メッセージを表示します。変数は匿名関数のローカル変数になり、グローバル スコープ
内に存在する必要はありません。
で作成します。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。