참조 유형 - Function 유형
Function 유형
함수를 정의하는 세 가지 방법:
1. 함수 설명
function sum(num1,num2){ return num1 +num2;
}
2. 함수 표현식
var sum = function(num1,num2){ return num1 + num2;
}
3. Function 구조 함수(권장하지 않음)//마지막 매개변수는 항상 함수체로 인식되어 두 번 코드를 해석하게 됩니다.
var sum =new Function("num1","num2","return num1 + num2");
주의: 함수 이름은 함수를 가리키는 바늘일 뿐이므로 함수 이름은 다른 대상을 포함하는 바늘과 차이가 없습니다
function sum(num1,num2){ return num1 + num2;
}
alert(sum(10,10)); //20var another = sum;
alert(another(10,10)); //20sum = null;
alert(another(10,10)); //20sum another , sum null another
주의: 괄호가 없는 함수 이름은 접근 함수 바늘이지 호출 함수가 아닙니다
재부팅 없음
함수 이름을 바늘로 이해하는 것은 왜 다시 불러오지 않았는지 이해하는 데 유리하다
function addSomeNumber(num){ return num + 100;
}function addSomeNumber(num){ return num + 200;
}
alert(addSomeNumber(100)); //300
두 번째 함수는 addSomeNumber를 새로운 함수로 가리킵니다.
함수 성명과 함수 표현식
해상도가 실행 환경에 데이터를 불러올 때 함수 성명과 함수 표현식은 일시적인 동인이 아니다.해상도는 함수 설명을 먼저 읽고 새 줄의 코드를 수집하기 전에 사용할 수 있도록 합니다.함수 표현식에 대해서는 코드 줄이 실행될 때까지 기다려야 진정으로 해석될 수 있다.
alert(sum(10.10)); //20function sum(num1,num2){ return num1 +num2;
}
코드 실행 환경에 앞서 해상도는 함수 성명이 향상되는 과정을 통해 함수 성명을 읽고 실행 환경에 추가합니다.코드에 값을 구할 때, JavaScript 엔진은 처음에 함수를 설명하고 원본 코드 트리의 맨 위에 놓는다
alert(sum(10,10)); sum = (num1,num2){ num1 + num2;
}
값으로서의 함수
전달 매개 변수처럼 한 함수를 다른 함수에 전달할 수도 있고, 한 함수를 다른 함수의 결과로 되돌릴 수도 있다.
function callSomeFunction(someFunction,someArugment){ return someFunction(someArugment);
}function add10(num){ return num + 10;
}var result = callSomeFunction(add10,10);
alert(result);//20
한 함수에서 다른 함수로 되돌아갈 수 있다
function createComparisonFunction(propertyName){ return function(object1,object2){ var values1 = object1[propertyName]; var values2 = object2[propertyName]; if(values1values2) return 1; else
return 0;
};
}var data = [{name:"qunzhu",age:21},{name:"huishuai",age:22},{name:"kuolang",age:23}];
data.sort(createComparisonFunction(name));
alert(data[1].name); //huishuai
함수 내부 속성
함수 내부에는 두 가지 특수한 대상이 있다:arguments와this.arguments 그는 클래스 그룹 대상으로 전입 함수에 있는 모든 매개 변수를 포함하고 있으며, 그는callee 속성을 가지고 있으며, 이 속성은 지침으로 이arguments 대상을 가진 함수를 가리킨다.
function factorial(num){ if(num<=1) return 1; else
return num * factorial(num-1);
}
함수에 문제가 있습니다. 함수의 실행과 함수 이름이 결합되어 개선되었습니다.
function factorial(num){ if(num<=1) return 1; else
return num * arguments.callee(num-1);
}var trueFactorial = factorial;
factorial = function(){ return 0;
}
alert(trueFactorial(5)); //120alert(factorial(5)); //0
this 인용은 함수 데이터가 실행되는 환경 대상이거나this 값이라고 할 수 있습니다. (웹 페이지의 전역 역할 영역에서 함수를 호출할 때this 대상이 윈도우를 인용합니다.)
window.color = "red";var o = {color:"blue"};function sayColor(){
alert(this.color);
}
sayColor(); //redo.sayColor = sayColor;
o.sayColor(); //blue
ECMAScript5도 다른 함수 대상의 속성을 규범화했습니다:caller. 이 속성은 현재 함수를 호출하는 함수의 인용을 저장하고 전역 작용역에서 현재 함수를 호출하면null로 되돌아옵니다.
function outer(){
inner();
}function inner(){
alert(inner.caller);
}
outer();// , outer()
함수 속성 및 방법
모든 함수에는 두 개의 속성이 있습니다:length와prototypelength 속성은 함수가 받아들이고자 하는 명명 매개 변수를 나타냅니다.
function sum(num1,num2){ return num1 + num2;
}
alert(sum.length); //2
ECMAScript의 인용 형식에 있어 프로토타입은 그들의 모든 실례 방법을 저장하는 진정한 곳입니다. 프로토타입의 속성은 일일이 다 들 수 없기 때문에 for-in을 사용하면 발견할 수 없습니다
모든 함수는 두 가지 비계승 방법을 포함하고 있습니다: apply () 와call ().이 두 가지 방법의 용도는 모두 지정된 작용역에서 함수를 호출하는 것이다. 실제로는 함수 안에 있는this 대상의 값을 설정하는 것과 같다
function sum(num1,num2){ return num1 + num2;
}function callSum1(num1,num2){ return sum.apply(this,arguments);
}function callSum2(num1,num2){ return sum.apply(this,[num1,num2]);
}
alert(callSum1(10,10)); //20alert(callSum2(10,10)); //20
call () 방법은 apply () 방법과 작용이 같다. 그들의 차이점은 파라미터를 받아들이는 방식이 다르고call () 방법은 첫 번째 파라미터일 때this값은 변하지 않으며 나머지 파라미터는 함수에 직접 전달된다는 것이다.다시 말하면,call () 방법을 사용할 때, 함수에 전달되는 매개 변수는 반드시 하나하나 열거해야 한다
function sum(num1,num2){ return num1 + num2;
}function callSum(num1,num2){ return sum.call(this,num1,num2);
}
alert(callSum(10,10)); //20
사실call () 과 apply () 가 진정으로 강한 것은 함수를 확장하여 운행하는 작용역에 의존하는 데 있다
window.color = "red"; var o = {color:"blue"}; function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
ECMAScript5는 bind() 메서드도 정의합니다.이 방법은 함수의 실례를 만들고,this 값은 bind () 함수에 전달되는 값에 귀속됩니다
window.color = "red";var o = {color:"blue"};function sayColor(){
alert(this.color);
}var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue
각 함수에 상속된 toLocaleString () 및 toString () 메서드는 항상 함수의 코드를 반환합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VTK 스텔스 함수의 vtkPlanevtkPlane vtkPlane provides methods for various plane computations. These include projecting points onto a plane, evaluat...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.