在JavaScript中,函數可以
◆ 被賦值給一個變數
◆ 被賦值為物件的屬性
◆ 作為參數被傳入別的函數
◆◆ 作為函數的結果被傳回
賦值給一個變數:
//声明一个函数,接受两个参数,返回其和 function add(x, y){ return x + y; } var a = 0; a = add;//将函数赋值给一个变量 var b = a(2, 3);//调用这个新的函数a print(b);
這段程式碼會印出”5”,因為賦值之後,變數a引用函數add,也就是說,a的值是一個函數物件(一個可執行程式碼區塊),因此可以使用a(2, 3)這樣的語句來進行求和操作。
賦值為物件的屬性:
var obj = { id : "obj1" } obj.func = add;//赋值为obj对象的属性 obj.func(2, 3);//返回5
事實上,這個例子與上個例子的本質上是一樣的,第一個例子中的a變量,事實上是全域物件(如果在客戶端環境中,表示為window物件)的一個屬性。而第二個例子則為obj對象,由於我們很少直接的引用全域對象,就分開來描述。
作為參數傳遞:
//高级打印函数的第二个版本 function adPrint2(str, handler){ print(handler(str)); } /将字符串转换为大写形式,并返回 function up(str){ return str.toUpperCase(); } //将字符串转换为小写形式,并返回 function low(str){ return str.toLowerCase(); } adPrint2("Hello, world", up); adPrint2("Hello, world", low);
執行此片段,可以得到這樣的結果:
HELLO, WORLD hello, world
應該注意到,函數adPrint2的第二個參數,事實上是一個函數,將這個處理函數作為參數傳入,在adPrint2的內部,仍然可以呼叫這個函數,這個特點在很多地方都是有用的,特別是,當我們想要處理一些對象,但又不確定以何種形式來處理,則完全可以將「處理方式」作為一個抽象的粒度來進行包裝(即函數)。
作為函數的回傳值:
先來看一個最簡單的例子:
function currying(){ return function(){ print("curring"); } }
函數currying傳回一個匿名函數,這個匿名函數會列印」curring”,簡單的調用currying()會得到下面的結果:
function (){ print("curring"); }
如果要呼叫currying回傳的這個匿名函數,需要這樣:
currying()();
第一個括號運算,表示呼叫currying本身,此時傳回值為函數,第二個括號運算子呼叫這個回傳值,則會得到這樣的結果:
currying
以上是javascript如何使用函數和傳回值用法實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!