Js 함수를 호출하는 방법은 다음과 같습니다.
(1) 명명된 함수는
(2) 참조로 익명 함수 호출
(3) 참조 없는 익명 함수 호출 1
(4) 참조 없는 익명 함수 호출 2
(5) 참조 없는 익명 함수 호출 3
그림 1.1과 그림 1.2를 보면 이 두 표현식의 연산 과정이 서로 다르다는 것을 알 수 있습니다. 그림 1.1에서는 강제 연산자를 사용하여 함수 호출 연산을 수행하고, 그림 1.2에서는 강제 연산자를 사용하여 " function direct" Quantity는 "이 식을 선언하고 함수 자체에 대한 참조를 반환한 다음 함수 호출 연산 "()"을 통해 함수 참조를 연산합니다. 위의 마지막 익명 함수 호출 void function(){}();은 함수를 호출하고 반환 값을 무시하는 데 사용됩니다. 연산자 void는 후속 함수 표현식이 작업을 수행하도록 하는 데 사용됩니다. "void"와 강제 연산 "()"를 사용하지 않으면 코드가 실행될 수 있나요?
(1)function(){}() //'()'를 사용하여 강제 호출
(2)function(){}(); //";"를 사용하여 명령문 실행
스크립트 엔진은 function(){}을 함수 선언으로 간주하여 구문 감지에 실패하고 코드는 다음과 같이 구문 분석됩니다.
함수(){};();
function(){}은 명령문으로 해석되는 반면 "();"는 별도의 줄로 해석되므로 구문 오류가 보고됩니다. "();"로 인해 오류가 발생한다는 것을 아는 이유는 무엇입니까? ? 다음 코드로 변경합니다:
함수(){}(1);
엔진에서는 다음과 같이 해석합니다.
함수(){};
(1); //단일 값 표현식
그래서 문법 검사를 통과했습니다...