簡體   English   中英

分號,期望和(結束)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM