[英]Semicolon, Expectations, and (end)
我用JSFiddle校對這個函數,它說第二行有一個缺少的分號,但是,我無法確定它會去哪里。
function debtSpiral() { var debtID = setInterval(debtIncrease() { //Sets variable for loop stopping later debt = (debt * 0.10) + debt; //Increases debt by ten percent... document.getElementById("debt").innerHTML = "You owe " + debt + " click(s)"; //Display debt }, 60000); //...per minute if (debt < 1) { //If you owe less than 1 click clearInterval(debtID); //Stop } }
此外,JSFiddle報告它“預期在第五行上進行賦值或函數調用,而是看到一個表達式”。 你能解釋一下這個以及如何解決這個問題嗎?
最后,為什么我需要在第九行使用(end)
?
有問題的小提琴 (按“JSHint”查看錯誤)
這只是一個語法錯誤:
var debtID = setInterval(debtIncrease() { //Sets variable for loop stopping later
我不知道該建議作為替代品,因為它實際上沒有意義。 setInterval()
函數將字符串(不要那樣做)或函數引用作為其第一個參數。 你的代碼既不是那些; 它真的沒什么。 它是一個函數調用,后跟一個塊,在此上下文中無效。
也許你的意思(作為對這個答案的評論建議)
var debtID = setInterval(function debtIncrease() { // ...
你忘了匿名函數沒有名字:
var debtID = setInterval(function () {
當解析器抱怨錯誤分號或其他任何東西時,它通常不是它實際需要的分號,代碼中只有一個錯誤,它無法弄清楚如何解析它。
正如其他人已經回答的那樣,您試圖調用命名函數而不是創建匿名函數。 用setInterval(function() {});
修復它setInterval(function() {});
但是,我注意到了一些可能感興趣的東西。
可以給匿名函數表達式一個名稱,以便稍后調用它:( (function foo() {})
,現在foo
在該閉包中可用。 然而,可能存在問題,在kangax的優秀文章中有所解釋。
這不是一個函數聲明,我們都知道它是正常的,完全正確和道德正確: function foo() {}
。 請注意周圍的parens缺乏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.