>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수 표현식에서 느낌표는 어떤 역할을 합니까?

JavaScript 함수 표현식에서 느낌표는 어떤 역할을 합니까?

DDD
DDD원래의
2024-12-20 13:03:17864검색

What Does the Exclamation Mark Do in JavaScript Function Expressions?

JavaScript 함수 표현식의 수수께끼 같은 느낌표

JavaScript 코드 영역에서 이상한 광경을 접했을 수도 있습니다: 느낌표 함수 선언 앞에. 겉보기에는 이상해 보이는 이 표현은 함수의 본질 자체를 바꾸는 심오한 의미를 담고 있습니다.

느낌표(!)는 함수 선언을 함수 표현식으로 변환합니다. 이는 이제 함수가 변수에 할당되거나 인수로 전달되거나 다른 함수에서 반환될 수 있는 값으로 처리된다는 의미입니다.

의미를 이해하려면 다음 코드를 고려하세요.

function foo() {}

함수를 정의할 뿐 호출하지는 않는 표준 함수 선언입니다. 실제로 함수를 실행하려면 다음과 같이 호출하면 됩니다.

foo()

이제 느낌표를 소개하겠습니다.

!function foo() {}();

겉으로는 무해해 보이는 이 추가가 게임의 판도를 바꿉니다. 느낌표는 함수 선언을 표현식으로 변환하며, 이제 괄호를 추가하여 즉시 호출할 수 있습니다. 괄호의 우선순위가 느낌표의 우선순위보다 높으므로 코드는 다음과 같이 실행됩니다.

(function foo() {})()

이는 본질적으로 이전 예제의 명시적 호출과 동일한 작업을 수행합니다. 그러나 이는 함수 표현식당 바이트를 절약한다는 미묘한 이점을 제공합니다.

게다가 느낌표는 또 다른 용도로도 사용됩니다. 이는 표현식이 함수의 반환 값을 기반으로 부울 값을 반환하도록 강제합니다. 그러나 즉시 호출되는 함수 표현식(IIFE)의 경우 일반적으로 반환 값이 정의되지 않아 표현식의 결과가 true가 됩니다. 이 부울 값은 일반적으로 사용되지 않지만 그럼에도 불구하고 느낌표의 존재로 인한 흥미로운 부작용입니다.

위 내용은 JavaScript 함수 표현식에서 느낌표는 어떤 역할을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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