>웹 프론트엔드 >JS 튜토리얼 >다른 구문을 가진 익명 함수가 수정자와 결합되면 JavaScript에서 다르게 동작합니까?

다른 구문을 가진 익명 함수가 수정자와 결합되면 JavaScript에서 다르게 동작합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 15:17:02912검색

Do Anonymous Functions with Different Syntax Behave Differently in JavaScript When Combined with Modifiers?

다른 구문을 가진 익명 함수는 JavaScript에서 기능적으로 동일합니까?

JavaScript에서 (function() { })() 및 ( function() { }())는 "foo"와 "bar"를 연속해서 표시하여 동일한 작업을 수행하는 것처럼 보일 수 있습니다. 그러나 특정 조건에서는 이 두 구문 사이에 미묘한 차이가 있습니다.

코드 블록 1:

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

alert(bar);

코드 블록 2:

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

alert(bar);

기능적으로 동일함

수정 사항이 없으면 두 코드 블록은 기능적으로 동일합니다. 익명 함수를 생성하고 즉시 실행한 다음 함수 내에 정의된 bar 변수에 액세스합니다.

수정과의 차이점

그러나 이러한 수정자를 도입하면 함수 호출 전에 새 항목을 추가하거나 함수 호출 뒤에 뭔가를 추가하면 동작이 변경됩니다.

new 및 .prop가 있는 코드 블록 1:

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

이 코드는 익명 함수의 새 인스턴스를 만들고 해당 prop 속성에 액세스합니다. 4를 반환합니다.

new 및 .Class가 포함된 코드 블록 2:

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

반대로 이 코드는 Class 속성에서 new를 호출합니다. 외부 괄호 안의 추가 괄호로 인해 함수 호출은 새 표현식의 일부가 아닙니다. 대신 일반적으로 함수를 호출하고 클래스 인스턴스인 반환 값을 반환합니다.

요약하면 (function() { })() 및 (function() { }())는 모두 기능적으로 일반적인 조건에서는 동일하지만 실행 방법에 영향을 미치는 수정자와 결합하면 다르게 동작합니다.

위 내용은 다른 구문을 가진 익명 함수가 수정자와 결합되면 JavaScript에서 다르게 동작합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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