ホームページ >ウェブフロントエンド >jsチュートリアル >javascript_javascript スキルにおける混同されやすいいくつかの概念のまとめ

javascript_javascript スキルにおける混同されやすいいくつかの概念のまとめ

WBOY
WBOYオリジナル
2016-05-16 16:04:181269ブラウズ

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 日がどの日であるかを判断するために使用できます。この日になると、その日が使用されます。
ユーザーは新年の挨拶メッセージを表示します。変数は匿名関数のローカル変数になり、グローバル スコープ
内に存在する必要はありません。 で作成します。

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。