簡體   English   中英

盡管變量已初始化並傳遞給函數,但未定義

[英]Variable is undefined despite being initialised and passed to function

不知道我哪里出問題了。

我有以下代碼,該代碼每1-2秒在頁面上創建一個“氣泡”,然后在6秒后銷毀每個氣泡。

該代碼通常可以正常工作,但變量bubbleID盡管已初始化但仍顯示為undefined

function startBubbleMachine(){
        var bubbleID = 1;
        setInterval(function makeBubble(bubbleID){
            var wh = randomInt(143, 50);
            console.log('making bubble number '+bubbleID); // this shows undefined
            $('.wrapper').append('<div class="db-bubble db-bubble-'+bubbleID+'" style="transform:rotate('+randomInt(20, 1)+'deg);left:'+randomInt(100, 1)+'%;width:'+wh+'px;height:'+wh+'px;"></div>');
            killBubble(bubbleID);
            bubbleID++; // this doesn't seem to get used
        }, randomInt(2000, 1000));
    }

我正在將bubbleID初始化為1:

var bubbleID = 1;

然后,我在setInterval中的函數中傳遞bubbleID

setInterval(function makeBubble(bubbleID){
    ...
});

然后在該函數中增加它:

bubbleID++;

我要去哪里錯了?

通過在匿名函數中包含一個名稱相同的參數,可以隱藏var bubbleID變量。 擺脫形式參數。

setInterval(function makeBubble( ){
//                              ^

包括該參數名稱不傳遞變量; 它只是說函數期望參數被傳遞。 但是, bubbleID ,因為該計時器函數中的代碼可以通過關閉“看到” bubbleID變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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