1. 程式人生 > >JS中關於函式呼叫的問題

JS中關於函式呼叫的問題

在js中,可以直接呼叫函式,也可以將函式名賦值給變數進行呼叫,他們的方式有所不同。

  1. 直接呼叫
    直接呼叫比較簡單,如
function output(message){
    window.alert(message);
}
output("hello ,world");

這就屬於直接呼叫顯示是:hello world
這裡寫圖片描述

2 賦值呼叫

    var a=output; 
    a("hello,world");

這相當於a是一個指標,指向了函式output(message);要注意引數。
輸出是:hello,world
這裡寫圖片描述
但是需要注意的是,如果直接輸出變數名,則會得到函式體的輸出。

window.alert(a);//或者直接輸出變數名window.alert(output);

這裡寫圖片描述
在這裡還有一個有趣的事情,如果是這樣:

    var a=output; 
    window.alert(a("hello,world"));

那麼就會出現先是一個視窗彈出 hello world

這裡寫圖片描述

確定以後又有一個窗口出來是:undefined

這裡寫圖片描述

這說明首先是a呼叫了函式output,第一個視窗是函式中的alert彈出來的,然後是window.alert(a(“hello,world”));執行,結果是undefined,說明這種方法不正確,這也在某種程度上說明了JS是解釋性的指令碼語言。


 3. 返回值呼叫
 對於有返回值的函式來說,可以用這種辦法:

var b=("abc");
window.alert(b);

“`
這樣的話會將返回值賦給變數b,輸出是:abc
這裡寫圖片描述
如果函式沒有返回值,就會輸出 undefined。

在應用過程中,最好還是使用直接呼叫比較符合習慣,更少出錯。