5.5 function
實(shí)例
function sum(num1, num2){return num1 + num2; }//函數(shù)表達(dá)式 var sum = function(num1, num2){return num1 + num2; }函數(shù)名是指向函數(shù)的指針,一個(gè)函數(shù)可能有多個(gè)名字
function sum1(num1, num2){return num1 + num2; }alert(sum1(1, 2));//3var anotherSum = sum1; l(anotherSum(10,10));//20 sum1 = null; l(anotherSum(10,10));//205.5.1 沒(méi)有重載(深入理解)
將函數(shù)名想象成指針
5.5.2 函數(shù)聲明與函數(shù)表達(dá)式
解析器解析的時(shí)候不是一視同仁:先讀取函數(shù)聲明,函數(shù)表達(dá)式要等解析器執(zhí)行到它所在的代碼行。
5.5.3 作為值的函數(shù)
function callSomeFunction(someFunction, someArgument){return someFunction(someArgument); } function callSomeFunction(someFunction, someArgument){return someFunction(someArgument); } function add10(num){return num + 10; }var result = callSomeFunction(add10, 10); l(result);//20function getGreeting(name){return 'hello ' + name; } var result2 = callSomeFunction(getGreeting, 'cjw'); l(result2);//hello cjw function createComparisonFunction(propertyName){return function(object1, object2){var value1 = object1[propertyName];var value2 = object2[propertyName];if(value1 < value2){return -1;}else if (value1 > value2){return 1;}else{return 0;}} }var data = [{name:'Zachary',age:228},{name:'Nicholas',age:29}]; data.sort(createComparisonFunction('name')); l(data[0]); data.sort(createComparisonFunction('age')); l(data[0]);5.5.4 函數(shù)內(nèi)部屬性 arguments,this
arguments: 一個(gè)類數(shù)組對(duì)象包含傳入函數(shù)的所有參數(shù)
arguments.callee: 指向擁有這個(gè)arguments對(duì)象的函數(shù)
this: 引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象
caller: 這個(gè)屬性中保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用。
this
window.color = 'red'; var o = {color:'blue'}; function sayColor(){l(this.color) } sayColor();//redo.sayColor = sayColor; o.sayColor();//bluecaller
function outer(){inner(); }function inner(){l(inner.caller);//? outer(){inner();} }outer();function outer(){inner(); }function inner(){l(arguments.callee.caller); } outer();5.5.5 函數(shù)屬性和方法(length,prototype, call,apply,bind)
length: 希望接受的命名參數(shù)的個(gè)數(shù)
prototype:保存所有實(shí)例方法的真正所在
call,apply: 擴(kuò)充函數(shù)賴以運(yùn)行的作用域
apply: 運(yùn)行函數(shù)的作用域,接收數(shù)組
call:運(yùn)行函數(shù)的作用域,接收參數(shù)
length
apply,call
function sum1(num1, num2){return num1 + num2; } function callSum1(num1, num2){return sum1.apply(this, arguments); } function callSum2(num1, num2){return sum1.apply(this, [num1,num2]); } function callSum3(num1, num2){return sum1.call(this, num1, num2); } l(callSum1(10, 10));//20 l(callSum2(10, 10));//20 l(callSum3(10, 10));//20擴(kuò)充函數(shù)賴以生存的作用域
window.color = 'red'; var o = {color: 'blue'}; function sayColor(){l(this.color); } sayColor();sayColor.call(this);//red sayColor.call(window);//red sayColor.call(o);//bluebind:創(chuàng)建一個(gè)函數(shù)的實(shí)例,其this值會(huì)被綁定到傳給bind()函數(shù)的值
window.color = "red";var o = {color:"blue"}; function sayColor(){l(this.color); } var objSayColor = sayColor.bind(o); objSayColor();//blue轉(zhuǎn)載于:https://www.cnblogs.com/caijw/p/8150938.html
總結(jié)
以上是生活随笔為你收集整理的5.5 function的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python内置函数(58)——inpu
- 下一篇: 计算机网络_第7版_谢希仁_目录