我有這樣的情況:傳遞函數
<script>
var cb;
function doSomething(c) {
cb = c();
}
cb();
</script>
但它不工作。我想設置一個變量作爲函數,使其他函數調用回調。有些想法?
我有這樣的情況:傳遞函數
<script>
var cb;
function doSomething(c) {
cb = c();
}
cb();
</script>
但它不工作。我想設置一個變量作爲函數,使其他函數調用回調。有些想法?
c()
執行的功能,並返回一個值,你需要一個參考給它:
cb = c
此外,你應該調用函數doSomething(func)
進行分配。
doSomething(function(){ alert('hello'); });
cb(); // "Hello"
但是,如果你想要的是一個回調那麼你並不需要一個全局變量:當你與其他功能參數的回調將運行運行功能
function doSomething(callback) {
// do something
if (callback) callback();
}
。
另外,你應該調用函數doSomething – 2013-04-06 21:21:55
謝謝!然而:「但是,如果你想要的是一個回調,那麼你不需要一個全局變量」,是的,我需要'因爲我需要從其他函數回憶該函數,我不能通過它作爲arg – Grork 2013-04-06 21:38:01
您需要分配CB先用你的函數:
<script>
var cb;
function doSomething(c) {
cb = c;
}
var myFunc = function(){
window.alert("test");
}
doSomething(myFunc);
cb();
</script>
如果你這樣做cb=c();
將執行功能c
瞬間,如果你想變cb
爲c
結果值返回給cb
,這樣做。否則,分配而不運行它。
你有3只選擇一個變量設置爲functiion
var fn = functionname;
var fn = function(param){};
這將是一個匿名函數var fn = function FunctionName(param){};
這將是一個名爲功能就派上用場了調試時,因爲它會爲您提供一個函數名稱(console.log(c);
您不能稱之爲var returnVal = fn();
或將其傳遞給函數var returnVal = myFunc(fn);
其中myFunc的調用帕拉姆,讓它成爲inFn
它像inFn();
什麼可能是值得注意的:因爲這樣的功能是關係到全球範圍內 ,可以綁定一個對象它改變了它的範圍。這給了你引用綁定對象的可能性this
。 (請注意,綁定是不是所有的瀏覽器,因爲它被定義ECMAScript 5支持,但也有相當一些polyfills在那裏。)
fn.bind(object);
或用fn.call(object, param1, param2)
或fn.apply(object, [param1, param2])
調用它在另一種情況下。尼斯寫在這Link to odetocode.com/blog。
c.call是你在找什麼 – 2013-04-06 21:21:48