|
復(fù)制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1()
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2('我被調(diào)用了')
ECMAScript3后加入給Function加入了call和apply后,就有了下面兩種
2、call
復(fù)制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.call(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被調(diào)用了')
3、apply
復(fù)制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.apply(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被調(diào)用了'])
4、new (不推薦使用這種方式哦 )
復(fù)制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
new fun1();
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
new fun2('我被調(diào)用了')
ok,從以上調(diào)用方式上看四種方式執(zhí)行結(jié)果沒有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時(shí)可能會(huì)讓你有些失望。
復(fù)制代碼 代碼如下:
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return "jack";
}
var c = new fun();
alert(c);//[object Object],為什么不是"jack"?
改成這樣,
復(fù)制代碼 代碼如下:
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return {name:'jack'};
}
var c = new fun();
alert(c.name);//jack,又正常返回了
好了,總結(jié)下:用new方式調(diào)用函數(shù)時(shí)。如果存在返回值,當(dāng)返回值是Javascript的內(nèi)置類型(基本類型)如字符串(String),數(shù)字(Number),布爾(Boolean)等時(shí),將不會(huì)返回該值;當(dāng)返回值是對(duì)象,函數(shù),數(shù)組等對(duì)象類型時(shí),將返回該對(duì)象,函數(shù),數(shù)組。
當(dāng)返回值是內(nèi)置類型(基本類型)時(shí),new fun()到底返回什么呢?下一篇將討論new方式調(diào)用的細(xì)節(jié)。
JavaScript技術(shù):javascript 具名函數(shù)的四種調(diào)用方式 推薦第1/3頁(yè),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。