>  기사  >  웹 프론트엔드  >  \"(function () { }) ()\" 및 \"(function () { })()\"는 JavaScript에서 기능적으로 동일합니까?

\"(function () { }) ()\" 및 \"(function () { })()\"는 JavaScript에서 기능적으로 동일합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 08:53:02856검색

Are

JavaScript에서 "(function () { }) ()"와 "(function () { })()"는 기능적으로 동일합니까?

JavaScript에서, 다음 두 코드 블록은 동일한 결과를 생성하는 것으로 나타납니다.

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);

두 블록 모두 "foo" 뒤에 "bar" 메시지가 표시됩니다. 그런데 이 두 코드 구조 사이에 기능적 차이가 있나요?

답변

코드 블록은 동일합니다

일반적인 상황에서는 "(함수( ) { }) ()"와 "(function () { })()"는 JavaScript에서 기능적으로 동일합니다. 둘 다 익명 함수를 호출하고 즉시 실행합니다. 이 함수는 bar 변수를 초기화하고 "foo" 메시지를 경고합니다.

다른 구문과의 차이점

그러나 코드에 구문을 추가하면 차이점이 나타날 수 있습니다.

사례 1: 함수 생성자 구문

다음 코드를 고려하세요.

new (function () {
    this.prop = 4;
}) ().prop;

이 코드는 함수 클래스의 새 인스턴스를 만들고 새 인스턴스의 prop 속성을 검색합니다. 값 4를 반환합니다.

사례 2: 네임스페이스 구문

다음 코드를 고려하세요.

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

이 코드는 Class 속성에서 new 연산자를 호출합니다. 중첩된 괄호로 인해 함수는 정상적으로 호출되며, 해당 반환 값은 새 인스턴스를 생성하는 데 사용됩니다.

위 내용은 \"(function () { }) ()\" 및 \"(function () { })()\"는 JavaScript에서 기능적으로 동일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.