一、function有兩種創建方式:
1).聲明一個function函數
function functionName(parameters) {
}
2).聲明爲一個function表達式,它是一個匿名函數,函數可以存儲在變量中,不需要函數名,通過變量名來調用
eg:
var x = function (a, b) {return a * b};
應用舉例:
var x = function (a, b) {return a * b};
var z = x(3,4);
二、function函數聲明也存在“提升”行爲,即聲明語句會被移動到當前範圍的上面,可以先使用,再聲明
eg:
myFunction(5);
function myFunction(y) {
return y * y;
}
注:function表達式不存在“提升”行爲
三、自我調用函數
自我調用函數會自動調用,不需要顯示調用
將function表達式包含在括號中,這就是一個自我調用function表達式,後接一個括號表示構造便可自我調用。
應用舉例:
(function (x, y) {
document.getElementById("demo").innerHTML = x*y;
})(4,1); //這有一個括號
注意:自我調用函數中聲明的變量是不能在外部使用的,是一個局部變量
function函數的參數是不指定數據類型的
function函數不執行傳入值的數據類型檢查
function函數也不檢查收到的參數個數
arguments對象:function的內置對象,它是一個參數數組,但是是按值傳遞,只知道參數值,不知道參數位置,因此即便改變了arguments中的值,也不會改變外界傳入參數的原值。這與按址傳入不同
應用舉例:
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
var i;
var max = -Infinity;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
四、function函數的調用
當一個function函數不是通過擁有者(對象)來調用,那麼它是被window對象調用,使用window對象調用方法有時可能會帶來一些衝突。因此使用對象來調用function函數更好些。
應用舉例:
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName();