함수 정의 표현식
표현식 모드에서 정의된 함수, 함수 이름은 선택사항
var functionName = function([arg1 [,arg2 [...,argn]]]){ statement; } var functionName = function funcName([arg1 [,arg2 [...,argn]]]){ statement; }
익명 함수(익명 함수), 람다 함수라고도 불리는데, 함수 키워드 뒤에 식별자가 없는 함수입니다
일반적으로 말하면 , 표현식으로 정의된 함수에는 이름이 필요하지 않으므로 해당 함수가 정의된 코드가 더 간결해집니다. 함수 정의 표현식은 한 번만 사용되는 함수를 정의하는 데 특히 적합합니다.
var tensquared = (function(x) {return x*x;}(10));
함수 정의 표현식에는 이름이 포함되므로 함수의 로컬 범위에는 함수 개체에 바인딩된 이름이 포함됩니다. 실제로 함수 이름은 함수 내에서 지역 변수가 됩니다.
var test = function fn(){ return fn; } console.log(test);//fn(){return fn;} console.log(test());//fn(){return fn;} console.log(test()());//fn(){return fn;}
명명된 함수 표현식의 경우 함수 이름은 함수 개체의 형식 매개 변수와 동일하며 변수 이름은 함수 내에서만 사용할 수 있습니다. 실제 매개변수는 함수 내부와 외부 모두에서 사용할 수 있습니다.
var test = function fn(){ return fn === test; } console.log(test());//true console.log(test === fn);//ReferenceError: fn is not defined
함수는 비표준 이름 속성을 정의합니다. 이 속성을 통해 해당 함수에서 지정한 이름에 액세스할 수 있습니다. 속성은 항상 function 키워드 뒤에 오는 값과 같습니다. 다음 식별자의 경우 익명 함수의 name 속성은 비어 있습니다.
//IE11-浏览器无效,均输出undefined //chrome在处理匿名函数的name属性时有问题,会显示函数表达式的名字 function fn(){}; console.log(fn.name);//'fn' var fn = function(){}; console.log(fn.name);//'',在chrome浏览器中会显示'fn' var fn = function abc(){}; console.log(fn.name);//'abc'
Function constructor
Function 생성자는 여러 매개변수를 받지만 마지막 매개변수는 항상 다음과 같이 간주됩니다. 함수 본문 및 이전 매개변수가 열거됩니다. 새 함수의 매개변수
var functionName = new Function(['arg1' [,'arg2' [...,'argn']]],'statement;');
[참고] 함수 생성자는 함수 이름을 지정할 수 없으며 익명 함수를 생성합니다
기술적으로 이것은 함수 표현식입니다. 그러나 이 구문을 사용하면 코드가 두 번 구문 분석되므로 권장되지 않습니다. 첫 번째는 일반 자바스크립트 코드를 파싱하는 것이고, 두 번째는 생성자에 전달된 문자열을 파싱하는 것인데, 이는 성능에 영향을 줍니다
var sum = new Function('num1','num2','return num1 + num2'); //等价于 var sum = function(num1,num2){ return num1+num2; }
Function() 생성자로 생성된 함수의 경우 함수 본문의 컴파일은 항상 전역 범위에서 실행됩니다. 따라서 Function() 생성자는 전역 범위에서 실행되는 eval()과 유사합니다
var test = 0; function fn(){ var test = 1; return new Function('return test'); } console.log(fn()());//0
[참고] 모든 함수가 생성자가 될 수는 없습니다
var o = new Math.min();//Uncaught TypeError: Math.min is not a constructor
위 내용은 자바스크립트 기본 튜토리얼의 표현식과 생성자에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!