これらの違いは何ですか?
var person = {
age: 25,
name: "David"
};
var person = (function() {
var name = "David", age = 25;
}());
私の質問は本当に、何をするのかという(function(){}())
ことです。
これらの違いは何ですか?
var person = {
age: 25,
name: "David"
};
var person = (function() {
var name = "David", age = 25;
}());
私の質問は本当に、何をするのかという(function(){}())
ことです。
何をし(function(){}())
ますか?
これは基本的に無名関数を作成してから実行します。これの一般的な使用法の1つは、グローバル変数を制限することです。
たとえば、次のように3つのグローバル変数(、、、var1
およびvar2
)がありvar3
ます。
var var1 = "a", var2 = "b", var3 = "c";
これらの宣言を無名関数でラップした場合でも、無名関数内でローカル変数としてアクセスできますが、グローバル名前空間を曇らせることはありません。例えば:
(function() {
var var1 = "a", var2 = "b", var3 = "c";
console.log(var1); // interact with local variables
})(); // execute function.
これらの違いは何ですか?
var person = {
age: 25,
name: "David"
};
このコードが関数に含まれている場合、。という名前のローカル変数が作成されperson
ます。それ以外の場合は、という名前のグローバル変数を作成しますperson
。
var person = (function() {
var name = "David", age = 25;
}());
このコードは無名関数を作成して実行し、その無名関数の戻りコードを変数に割り当てますperson
。無名関数には戻り値がないため、変数person
の値はundefined
。です。このステートメントは、現在のところvar person;
、匿名関数には副作用がなく、戻り値もないため、機能的にはと同等です。
var person = (function() {
var name = "David", age = 25;
}());
関数にはステートメントundefined
がないため、personはになります。return
これは自己実行型の無名関数であり、以下のようにイメージできます。
function foo() {
var name = "David", age = 25;
}
var person = foo();
作成した無名関数を実行します。
この手法は、クラスのメンバーをスコープできるので便利です。
クラスと継承を行うための良い方法を探している場合は、http://ejohn.org/blog/simple-javascript-inheritance/をご覧ください。
また、クラスをAMDモジュールとして定義することをお勧めします。