function create1(pro)
}var c1 = create1("pro"); // 建立函式
c1;c1(1,2);
這種函式返回另乙個函式的,我們第一次呼叫只是構建了乙個外層函式體物件,
只有有後續的呼叫,才能呼叫內層函式體,並且重複呼叫,只會重複內層函式體。
閉包和tostring 用法(引數為類物件的引數。這時會自動呼叫類物件的轉化為字串的tostring方法)
// 宣告乙個函式表示式
var add = function(x)
// 構建乙個函式體的tostring()函式
tmp.tostring = function()
return tmp; // 返回的是乙個函式體,如果該函式體有tostring()方法,則會呼叫函式體的tostring()方法
}add(1)(2)(3); //5
add(10)(2)(3); //5
add(100)(2)(8); // 10
add(1)(2)(5);
function makeadder(addval)
}var add2=makeadder(2);
var a=add2(10)
console.log(a);
// => 12
var b=add2(90)
console.log(b);
// => 92
其實這裡運用了閉包的知識,我們都知道閉包會儲存外部函式的作用域鏈,可以捕獲外部函式的引數;
當我們返回乙個add2()函式的時候,這個函式會一直記住外部函式的addval的值
[缺點]:過度使用閉包,會造成記憶體洩漏,就像上面的add2()函式,會一直儲存著外部函式的作用域鏈,直到自己被銷毀
函式都有單獨的作用域和prototype屬性,如果要訪問屬性和函式裡的變數
外部是無法直接訪問的,必須先new 乙個例項出來
高階函式 閉包
f用於 的格式化,內是變數或函式的某個形參 s這種格式化不行 def func name 小明 print f good morning,func def func name print f good morning,func 小明 分割線 高階函式 引數為函式 閉包 返回值為函式 裝飾器 返回值為...
函式高階(閉包)
def outer func loc list def inner func name print s loc list s name,loc list return inner func clo func 0 outer func clo func 0 clo func 0 clo func 0 ...
關於閉包函式
閉包函式其實跟普通函式呼叫沒啥子很大的差異,只不過所謂閉包,就是把當前函式內部封閉對外留個介面呼叫 普通函式好像也差不多 基本用法 function test string echo b a test1 sdsdsd 就像不能訪問全域性變數一樣 b function a function test1...