![](/img/trans.png)
[英]Can someone explain to me how the scope of the logical "OR" operator works in 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
第一次運行中, timerRunning
為false
,表示!timerRunning
為true
。 結果是, 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.