本篇文章為大家帶來了關於javascript的相關知識,其中主要整理了函數的定義與基本使用的相關問題,包括了用函數語句定義、函數的呼叫、未定義的實參等等內容,下面一起來看一下,希望對大家有幫助。
【相關推薦:javascript影片教學、web前端】
##1.用函數語句定義function sumArray(arr) { var sum = 0; for(var i = 0,aLength = arr.length;i < aLength;i++) { sum += arr[i]; } return sum; }關鍵字
function後面空一格,
sumArray 是函數的名字,其命名規範與變數名稱的命名規範相同:
只能有字母、數字、底線和美元符號,不能以數字開頭,不能是關鍵字。
形式參數,只需要參數名稱就可以。參數可以是0個、
1個或多個,彼此之間用
,隔開,
{}中間包含的是
函數體。含有一條或多條語句。函數體用來實現函數的功能。
return後面是函數的
回傳值,函數也可以沒有回傳值。函數運行完return這句話這裡就會退出運行,
return下面的語句
不再執行。傳回值即函數的輸出。
在函數定義的前面和後面都可以呼叫該函數,只要函數和呼叫函數的語句在一個原始檔裡面就可以了。
2.用表達式定義用表達式的方式定義函數,就是用賦值表達式把函數賦值給一個變數,這其實就是把函數看成一個變數。這個時候函數可以有名字,也可以沒有名字,沒有名字的函數叫做匿名函數。
var funct = function getMax(a,b) { return a>b?a:b; };//注意这后面的分号不能少,因为我们定义的是一个变量!和
用函數語句定義不同的是,只能在函數定義語句之後呼叫函數,且呼叫的時候只能用變數名稱funct,不能用函數名稱
getMax,如:
var funct = function getMax(a,b) { return a>b?a:b; }; console.log(funct(1,2));//输出2
之後直接是參數列表:
var funct = function(a,b) { return a>b?a:b; };這個函數沒有名字,它被賦值給了變數
funct,所以叫匿名函數。同樣,
也只能在這一語句之後呼叫該函數。
var funct = function(a,b) { return a>b?a:b; }; console.log(funct(1,2));//输出2
總結:用表達式定義函數是即拿即用的,定義了就只能在這一語句之後呼叫該函數
3 .函數的呼叫在實訓四中,我們曾經介紹過物件可以有自己的方法,當然這也是函數。這種函數的呼叫和前面兩關定義的函數有細小的差別。//函数的定义:求三个数的最大值 function max(a,b,c) { if(a > b) { if(a > c) return a; else return c; } else { if(b > c) return b; else return c; } } //调用该函数 var result = max(1,2,3);//result为3 console.log(result);//输出3呼叫函數的時候,需要傳入和形參相同個數的的具體值,上面的函數有
3個參數,所以下面呼叫的時候傳入
3個具體的值,
1傳給參數
a,
2傳給參數
b,
3傳給參數
c。函數的回傳值透過賦值符號
=傳給了變數
result。如果函數體內沒有
return關鍵字,將會傳回
undefined。
var ob = { id:1, getMax:function(a,b) { return a>b?a:b; } }; var result = ob.getMax(2,1);//result值为2 var result1 = ob["getMax"](2,1);//result1的值也是2與上面的差異是,這裡要定位到函數,需要使用
物件名稱.函數名稱或
物件名稱["函數名稱"],其它相同。
JavaScript既
不檢查實參的類型,也不檢查實參的個數。
JavaScript中的實參會依照順序
從左到右依序比對上形參,例如:
function myFunction(a,b,c) { console.log(a); console.log(b); console.log(c); } myFunction(1,2,3);實參
1傳入形參
a,實參
2傳入形參
b,實參
3傳入形參
c。當實參個數少於形參時,靠右的形參會被傳入值
undefined。如:
function myFunction(a,b,c) { console.log(a); console.log(b); console.log(c); } myFunction(1,2);實參
1傳入形參
a,實參
2傳入形參
b,
undefined傳入形參
c。如果只想給右側的參數傳入數據,可以給前幾個實參傳入
undefined。如:
function myFunction(a,b,c){ console.log(a); console.log(b); console.log(c); } myFunction(undefined,1,2);上面這兩種做法不夠嚴謹,最佳實踐是給可能被傳入
undefined值的形參設定一個
預設值。如:
function getSum(a,b,c) { if(c === undefined) c = 0; console.log(a+b+c); } myFunction(1,2);
JavaScript
一切都是对象,实参也是一个对象,有一个专门的名字arguments
,这个对象可以看成一个数组(类数组,不是真的数组),实参从左到右分别是arguments[0]、arguments[1]...
,arguments.length
表示实参的个数。
//求参数的和 function getSum() { var aLength = arguments.length; var sum = 0; for(var i = 0;i < aLength;i++) { sum += arguments[i]; } return sum; } console.log(getSum(1,2,3,4,5))//输出15
这里的形参直接省略,使用arguments[i]
表示。
复杂的函数通常多达十几个参数,尽管JavaScript
不做参数个数和类型的检查,但是调用时实参的顺序不能乱。开发人员需要检查每一个实参和形参的对应关系,这样效率很低。一种很好的解决方案是使用对象作为参数,函数会根据对象的属性名操作参数。
function myFunction(obj) { console.log(obj.name); obj.number++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//输出myObj console.log(myObj.number);//输出35
一个函数(为方便行文,称为a
函数)可以作为另外一个函数(称为b
函数)的参数,b
函数最终可以返回一个具体的值。
从原理上来说,b
函数在自己的函数体内调用了a
函数,所以需要把a
函数的名字作为实际参数传递给b
函数。如下:
//求最大值 function getMax(a,b) { return a>b?a:b; } //求最小值 function getMin(a,b) { return a<b?a:b; } //下面这个函数以函数作为参数,并最终返回一个值 function getM(func,num1,num2) { return func(num1,num2); } getM(getMax,1,2);//返回2 getM(getMin,1,2);//返回1
我们把a
函数的名字(getMax
或者getMin
)传给b
函数(getM()
),然后在b
函数内部调用传入的a
函数,得到相关的结果。
【相关推荐:javascript视频教程、web前端】
以上是一起聊聊JavaScript函數的定義與基本使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!