함수의 자행, 변수 승급과 함수 승급
functionadd () {} 함수 성명이라고 합니다.
varadd=function () {} 함수 표현식이라고 합니다.
function () {} 익명 함수입니다.
1. 함수의 자체 실행
그럼 우리 호출을 통과하지 못하게 할 방법이 있나?
function add(){};
add();
자기 수행이 가능한가요?
저희가 이 세 가지 방법을 해볼게요.
//
var add=function(x,y){
console.log(x+y);
}(5,6); // :11( )
)
//
function add(x,y){
console.log(x+y);
}(5,6); // : ,
//
function(){
console.log(arguments[0]+arguments[1]);
}(5,6); // : , Uncaught SyntaxError: Unexpected token (
함수 표현식 뒤에 괄호를 넣으면 함수를 즉시 실행할 수 있지만, 함수 성명은 안 됩니다!!
이상하게도 익명 함수도 함수 표현식이지만 왜 문법 오류를 냈을까?이것은 익명 함수가 함수 표현식에 속하지만 값을 부여하지 않은 것이 분명하기 때문이다. 자바스크립트 해석 엔진은 그것을 함수 성명으로 삼아 함수 이름을 요구할 것이다. 그러나 이것은 익명 함수이다. 이름은 틀림없이 없을 것이다. 자바스크립트가 혼합되어 직접 당신에게 잘못을 반성하게 할 것이다.
그러면 어떻게 익명 함수가 이 문제를 실행합니까?사실은 간단합니다. 자바스크립트 해상도에 익명 함수가 함수 성명이 아니라고 알려주면 됩니다.
//
+function(){
console.log(arguments[0]+arguments[1]);
}(5,6);
//
-function(){
console.log(arguments[0]+arguments[1]);
}(5,6);
//
!function(){
console.log(arguments[0]+arguments[1]);
}(5,6);
//
(function(){
console.log(arguments[0]+arguments[1]);
})(5,6);
(function(){
console.log(arguments[0]+arguments[1]);
}(5,6));
다음은 함수 성명 자행 문제를 해결하는 것이다. 사실 방법은 익명 함수 자행 방법과 같다. 더하기, 빼기, 느낌표, 괄호 모두 해결할 수 있다
!function add(x,y){
console.log(x+y);
}(5,6);
+function add(x,y){
console.log(x+y);
}(5,6);
-function add(x,y){
console.log(x+y);
}(5,6);
(function add(x,y){
console.log(x+y);
})(5,6);
(function add(x,y){
console.log(x+y);
}(5,6));
2. 변수 승급, 함수 승급
함수 성명이 있어야 향상됩니다. 함수 표현식은 변수 향상에 속합니다.
우리 먼저 아래 코드의 결과가 무엇인지 봅시다
console.log(a);
console.log(b);
console.log(c);
var a=1;
function b(){
return 2;
}
var c=function(){
return 3;
}
결과
console.log(c)의 결과와 console.log(a)는 같고 함수 표현식은 변수 향상에 속한다는 것을 설명한다.이렇게 증명하는 것은 여전히 좀 경솔하니, 우리 아래의 코드를 다시 한번 봅시다
console.log(b());
console.log(c());
function b(){
return 2;
}
var c=function(){
return 3;
}
결과
결과는 매우 뚜렷하다. 함수 c는 변수명 c를 향상시켰을 뿐이고 함수 성명이 향상되었다!
그러면 변수의 승급과 함수 성명의 승급은 어느 승급의 우선순위가 비교적 높습니까?
console.log(b);
console.log(b());
var b=1;
function b(){
return 2;
}
결과
그 결과 함수 성명 승급의 우선순위가 변수 승급보다 더 높은 것으로 나타났다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.