[英]JS callback error: Uncaught SyntaxError: Unexpected token function
我正在學習JS並讀取函數可以作為參數傳遞給任何其他變量。 在下面的代碼中,當我將匿名函數作為參數傳遞時,它會給出"Uncaught SyntaxError: Unexpected token function"
var x;
function myfun(x, function(x) {
console.log("Value of x is: "+ x );
});
myfun(2,4);
我更了解錯誤背后的邏輯。 我究竟做錯了什么?
謝謝bt
如果要將匿名函數作為參數傳遞,則必須至少指定其參數名稱。 因此,當此參數undefined
,它將被賦予此函數,但我們無法確認我們是否會收到函數,因此最好再創建一個條件。
示例 - 設置fnc
參數的默認值。 這是一個新的瀏覽器實現。
function myfun(x, fnc = function(x) {
console.log("Value of x is: " + x)
})
{
/* block statement is always required in a function declaration */
fnc(x)
}
示例 - 檢查b
是否為函數
function myfun(x, fnc)
{
typeof fnc !== 'function' && (fnc = function(x) {
console.log("Value of x is: " + x)
})
fnc(x)
}
但你想要做的是:
function myfun(x) {
console.log("Value of x is: " + x)
}
您只需要使用{...}
直接聲明塊語句。
在你的代碼中,你似乎試圖聲明兩個函數,一個名為myfun
,一個接受兩個參數,一個未命名(匿名)函數,它接受一個參數。 您的代碼中似乎存在兩個語法錯誤:(1)函數myfun
沒有函數體,(2)您在myfun
的參數列表中聲明了一個函數。
讓我們通過首先聲明兩個函數(給第二個名稱並給myfun
一個函數體)來解決這個問題:
function myfun(x, functionToBeCalled) {
functionToBeCalled(x);
}
function functionToBePassed(x) {
console.log("Value of x is: "+ x );
}
現在,我們可以調用函數myfun
並傳遞兩個參數,一個x
的值和一個在myfun
中調用的functionToBePassed
- 函數functionToBePassed
:
myfun(2, functionToBePassed);
如果你想要匿名傳遞第二個函數,當你調用函數myfun
時聲明這個函數,而不是在你聲明 myfun
:
//declare myfun function myfun(x, functionToBeCalled) { functionToBeCalled(x); } //call myfun and pass a function as an argument myfun(2, function(x) { console.log("Value of x is: "+ x ); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.