簡體   English   中英

我們可以使用在回調函數中定義的 javascript 變量,在它之外(回調函數)嗎?

[英]Can we use javascript variables which are defined in callback functions, outside of it(callback function)?

這是我的代碼。

var scoreResults = document.querySelectorAll(".flex-blackjack-row-1 h3");
var scores = document.querySelector(".flex-blackjack-row-1 span");

const config = {childList: true};

const busted = function (mutationList, observer){
    
        var bustedMessage = document.createElement('h2');
        bustedMessage.textContent = 'BUSTED!';
        scoreResults[0].before(bustedMessage);
        hitButton.setAttribute('disabled', 'true');
    
}

const observer = new MutationObserver(busted);
observer.observe(scores, config);

我在回調函數中定義了bustedMessage變量,我想在該回調函數之外使用它。 仍然在成功調用 busted 函數之后(這意味着仍然在初始化bustedMessage變量之后),該變量不能在回調函數之外使用。

但是當我拿出這個代碼塊時,

    var bustedMessage = document.createElement('h2');
    bustedMessage.textContent = 'BUSTED!';

“busted”回調函數到外部,我也可以在其他函數中使用bustedMessage變量。 請解釋為什么會發生這種情況? 我無法理解它,因為bustedMessage是一個應該在任何地方使用的var類型變量。

bustedMessage在外部定義bustedMessage

var bustedMessage;

const busted = function (mutationList, observer){
    if (parseInt(scores.textContent) > 21) {
        bustedMessage = document.createElement('h2');
        bustedMessage.textContent = 'BUSTED!';
        scoreResults[0].before(bustedMessage);
        hitButton.setAttribute('disabled', 'true');
    }
}

您現在可以在此腳本的任何位置自由使用 bustedMessage,當然在您第一次調用busted之前它是未定義的。

暫無
暫無

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

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