爲什麼此代碼片段輸出5(如預期由於範圍鏈)? let arr = []
var firstFunc;
for(var i = 0; i < 5; i++) {
var iterFunc = function() {
return function() {
return i
}
}
arr.push(iterFunc())
}
我想知道在調用outerfunc之後答案的值是多少。特別對它背後的推理感興趣(例如,爲什麼innerfunc的返回值沒有替換全局範圍中存儲在var x中的值?)謝謝! var x = 10;
function outerfunc() {
x = 20;
function innerfunc() {
var x = x + 20;
return x;
我希望創建一個處理一個封閉的方法。封閉包含的方法調用和我關閉方法應該按順序執行它們,例如: when("I tap the Get Coffee button")
{
_ in
self.tap(p.button1)
self.wait(1)
self.tap(p.button1)
return true
}
和我(簡化)關閉方法: