Dam*_*GDO 1 html javascript logic operators
抱歉问这个问题,我不知道该怎么问。基本上我正在使用逻辑运算符练习 JavaScript。我有一个非常简单的 HTML 代码:
<body> <script src="logic_operators.js"></script> </body>
文件“logic_operators.js”有以下几行代码:
let value1 = true;
let value2 = false;
document.write(value1 && value2 + '<br/>');
document.write(value1 || value2 + '<br/>');
document.write(!value1 + '<br/>');
document.write(!value2 + '<br/>');
Run Code Online (Sandbox Code Playgroud)
基本上,每个document.write()句子用新行写出每个逻辑操作数的结果。
它适用于除 OR ( || ) 之外的每个句子,它不打印新行。我得到下一个结果:
false
truefalse
true
Run Code Online (Sandbox Code Playgroud)
我需要使用括号将 OR 操作括起来才能使句子起作用:
document.write((value1 || value2) + '<br/>');
这是为什么?我是 JavaScript 的新手,无法真正弄清楚这一点。
+具有比更高的运算符优先级||。具体来说,+ 有 14 和 || 有 6。所以,+当没有括号将三个运算符分组时,首先完成操作。
document.write(value1 || value2 + '<br/>');
Run Code Online (Sandbox Code Playgroud)
是
document.write(value1 || (value2 + '<br/>')
Run Code Online (Sandbox Code Playgroud)
导致
document.write(true || (false + '<br/>')
Run Code Online (Sandbox Code Playgroud)
document.write(true)
Run Code Online (Sandbox Code Playgroud)
的&&优先级也低于+。&&如果第一个为真,则计算为最后一个操作数。所以
document.write(value1 && value2 + '<br/>');
Run Code Online (Sandbox Code Playgroud)
document.write(true && false + '<br/>');
Run Code Online (Sandbox Code Playgroud)
document.write(true && (false + '<br/>'));
Run Code Online (Sandbox Code Playgroud)
document.write(false + '<br/>');
Run Code Online (Sandbox Code Playgroud)
因此,它恰好为value1and 的这些特定值生成了您想要的换行符value2。
虽然您可以通过使用括号或使用writeln来避免这个问题,但完全避免会好得多document.write。
| 归档时间: |
|
| 查看次数: |
28 次 |
| 最近记录: |