참조 유형 - Function 유형

5823 단어 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 () 메서드는 항상 함수의 코드를 반환합니다.

좋은 웹페이지 즐겨찾기