! JavaScript中的逻辑运算符和作用域

时间:2017-09-18 05:49:52

标签: javascript

我正在Lynda.com上完成JavaScript基础培训,我很难围绕一个概念的逻辑。

我有下面的代码,通过使用setInterval设置间隔,将计时器设置为每千分之一秒运行一次。

$test = "0.45*100";
$value=eval("return ($test);");
echo $value;

基本上,我很困惑,因为在教程中,timerRunning是一个在代码顶部设置为false的全局变量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) } }

因此,(var timerRunning = false;)是否意味着!timerRunning是真的?或者,是因为逻辑上timerRunning表示不是!timerRunning AKA是假的,无论全局变量最初设置的是什么?

修改

没关系......我不知何故误解了代码的逻辑,显然我需要睡得更多。出于某种原因,我在考虑timerRunning在if语句中设置timerRunning的值,因此,var timerRunning = false为真,当真正!timerRunning实际上只是意味着错误时,我们继续在if语句中,因为if语句为true。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

首次运行start时,timerRunningfalse,意味着!timerRunningtrue。 结果是if - 块仅运行一次,第一次调用start

答案 1 :(得分:0)

由于感叹号,

!timerRunningfalse == timerRunning类似。这是每种编程语言AFAIK。在此处阅读更多相关信息:What does an exclamation mark before a function really mean

var timerRunning = false;

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