선언 된 var를 포함하는 조건에 따라 실행되는 자체 실행 함수가 있으며, 존재하지 않으면 개체가 전달됩니다.조건을 따르는 함수를 자체 실행하는 것을 실행 중입니다.
예 :
var myFunc = (function(myFunc){}(myFunc || {}));
어떻게 객체를 전달에 "또는"조건 연산자가 올? MYFUNC 인수는 항상 {}
되기 때문에
선언 된 var를 포함하는 조건에 따라 실행되는 자체 실행 함수가 있으며, 존재하지 않으면 개체가 전달됩니다.조건을 따르는 함수를 자체 실행하는 것을 실행 중입니다.
예 :
var myFunc = (function(myFunc){}(myFunc || {}));
어떻게 객체를 전달에 "또는"조건 연산자가 올? MYFUNC 인수는 항상 {}
되기 때문에
var myFunc = (function(myFunc){}(myFunc||{}));
이는 이해가되지 않습니다 - 내가 그에 의해 혼란 스러워요.
아픈 정의 된이 예제 시원한에서
첫 번째 예
var cool = {
person: 'john'
};
(function(Argument){
console.log(Argument); // Result Object {person: "john"}
}(cool || {}));
을 수행하고이 늘 ||
지나 갈 수 있도록 객체 하나를 설명다음 시험 이 예제의 멋진 르
var cool;
(function(Argument){
console.log(Argument); // Result Object {}
}(cool || {}));
이 그러나을 정의 된 변수에 대한 만들면 기본적 값이 너무 인수는 개체 대신에 제공 한 코드가
입니다 정의되지 않은이 경우 너무 undefined
입니다 module pattern의 예입니다. 특히 그것은 모듈 패턴의 loose augmentation의 예입니다.
모듈 패턴은 기본적으로 객체를 반환하는 immediately invoked function expression (IIFE)입니다. 예 :
// file 1
var MODULE = (function() {
var my = {}, privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
증감을 사용하면 모듈을 여러 부분으로 나눌 수 있습니다. 각 파트는 자체 파일에 상주 할 수 있습니다. 확대 file 1
의 패턴 그러나
// file 2
var MODULE = (function (my) {
my.anotherMethod = function() {
// added method...
};
return my;
}(MODULE));
이
file 2
전에로드해야합니다 그렇지 않으면이 오류가 발생합니다 : 예를 들어 다음과 같이 우리는 위의 모듈을 보강 할 수 있습니다. 루스 보강을 사용하면 임의의 순서로 파일을로드 할 수 있습니다. 모듈
MODULE
는 임의의 순서로 로딩 될 수있는 다수의 파일을 통해 분할 될 수도 상기 예에서
var MODULE = (function (my) {
// add capabilities...
return my;
}(MODULE || {}));
. MODULE || {}
이라는 표현식은 MODULE
으로 평가됩니다. 그렇지 않으면 {}
으로 평가됩니다.
로드 된 첫 번째 파일의 경우 은 처음에 undefined
이 될 것이므로 표현식은 {}
으로 평가됩니다. 후속 파일에서 표현식은 MODULE
으로 평가됩니다.
+1 명확한 증가 예제입니다.그러나 구문'obj || 마지막 문장에서 당신이 답한 {}'은 주로 질문을 받았습니다. – laika
무엇이 문제입니까? – mishik