/ / JavaScriptと自己実行関数 - javascript、jquery、function

JavaScript&自己実行機能 - javascript、jquery、function

理解しようとしている私は「JS」について説明しています。そして、以下のコードをまとめて、得られないものを説明します。私が理解できないのは、名前変数がどこに格納されているかということです。その変数は今グローバルですか?

(function($) {

var name = "";

$.helloWorld = function(yourName) {
name = yourName;
console.log("Hello " + yourName);
}

}(jQuery));

回答:

回答№1は4

name 変数は外部関数に対してローカルです。 var キーワード。内部関数は、その変数への参照を含むクロージャです。これがこれを示すより良い例です。

(function($) {

var name = "";

$.setName = function(newName) {
name = newName;
}

$.showName = function() {
console.log("Name is: " + name);

}(jQuery));

これを定義したら、次のことができます。

$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();

見る JavaScriptクロージャはどのように機能しますか?


回答№2については2

これはあなたが理解するのを助けるはずです:

(function(){

var name;
var scope1;

// Here you can use scope1 and name

(function(){

var name;  //  <------------------------
var scope2;                         // |
// |
// Here you can use scope1,scope2, and name

(function(){

var name;   //  <------------------------------
var scope3;                                 // |
// |
// Here you can use scope1,scope2,scope3, and name

})();

})();

})();

// Anyvariable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;

このスニペットでは、3つの関数によって3つのスコープが作成されています。最も内側では、ローカル変数だけでなく、一意の名前を持つ変数(scope1、scope2、およびscope3)にアクセスできます。 nameこれは、中央のスコープとは別の名前です。そのような変数名を外部スコープ内の変数へのアクセスを防ぐために再利用することは、シャドーイングと呼ばれます。

で宣言されていない変数は、 var キーワードは自動的にグローバルスコープ内にあると見なされます。グローバルスコープで多くの変数を宣言するのは悪い習慣です。それらは他のスクリプトと衝突しやすいからです。