JavaScript에서, 다음 두 코드 블록은 동일한 결과를 생성하는 것으로 나타납니다.
(function () { bar = 'bar'; alert('foo'); })(); alert(bar);
(function () { bar = 'bar'; alert('foo'); }()); alert(bar);
두 블록 모두 "foo" 뒤에 "bar" 메시지가 표시됩니다. 그런데 이 두 코드 구조 사이에 기능적 차이가 있나요?
코드 블록은 동일합니다
일반적인 상황에서는 "(함수( ) { }) ()"와 "(function () { })()"는 JavaScript에서 기능적으로 동일합니다. 둘 다 익명 함수를 호출하고 즉시 실행합니다. 이 함수는 bar 변수를 초기화하고 "foo" 메시지를 경고합니다.
그러나 코드에 구문을 추가하면 차이점이 나타날 수 있습니다.
다음 코드를 고려하세요.
new (function () { this.prop = 4; }) ().prop;
이 코드는 함수 클래스의 새 인스턴스를 만들고 새 인스턴스의 prop 속성을 검색합니다. 값 4를 반환합니다.
다음 코드를 고려하세요.
new ( function() { return { Class: function() { } }; }() ).Class;
이 코드는 Class 속성에서 new 연산자를 호출합니다. 중첩된 괄호로 인해 함수는 정상적으로 호출되며, 해당 반환 값은 새 인스턴스를 생성하는 데 사용됩니다.
위 내용은 \'(function () { }) ()\' 및 \'(function () { })()\'는 JavaScript에서 기능적으로 동일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!