簡體   English   中英

! JavaScript中的邏輯運算符和范圍

[英]! Logical Operator and Scope in JavaScript

我正在通過Lynda.com上的JavaScript Essential Training進行工作,但是我很難將概念的邏輯包扎起來。

我下面有這段代碼,該代碼通過使用setInterval設置間隔來將計時器設置為每千分之一秒運行一次。

var timerRunning = false;

function start() {
    let textEnteredLength = testArea.value.length;
    if (textEnteredLength === 0 && !timerRunning) { //textEnteredLength is 0 and timerRunning is false
        timerRunning = true;
        interval = setInterval(runTimer, 10); //runTimer every 10 milliseconds (thousandth of a second)
    }
}

基本上,我很困惑,因為在本教程中,timerRunning是在代碼頂部設置為false的全局變量(var timerRunning = false;)

因此, !timerRunning並不意味着timerRunning為true嗎? 還是因為在邏輯上!timerRunning意味着無論全局變量最初設置為什么, timerRunning AKA都不timerRunning假?

編輯:

沒關系...我以某種方式誤解了代碼的邏輯,顯然我需要多睡一會兒。 出於某種原因,我認為var timerRunning = false在if語句中設置var timerRunning = false的值,因此!timerRunning為true,而當真正的timerRunning只是意味着false時,我們繼續進入if語句的內部,因為if陳述是正確的。

謝謝你的幫助。

start第一次運行中, timerRunningfalse ,表示!timerRunningtrue 結果是, if -block僅運行一次,則首次調用start

由於有感嘆號, !timerRunning類似於false == timerRunning 這在每種編程語言AFAIK中都是如此。 在此處閱讀有關此內容的更多信息: 函數之前的感嘆號是什么意思

 var timerRunning = false; console.log('false ... ' + timerRunning); console.log('true cause it is false ... ' + !timerRunning); 

暫無
暫無

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

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