if语句语法澄清

时间:2016-10-21 20:35:05

标签: javascript html

<html>
<head>
<title>Beast Mode ON</title>

<style>

</style>
</head>
<body>

<script type = "text/javascript">
var name = prompt("Please enter your name: ");
if (name == null || name == "") name = " visitor "
{document.write("Hi " + name + " welcome to javascript.");}
 </script>

</body>
</html>

此代码可以正常工作。我想提出的问题是为什么?因为&#34; if&#34;只有满足paretheses中的条件时,语句才会执行花括号中的代码。但如果我尝试加入像

这样的括号
if ((name == null || name == "") name = " visitor ")

代码停止工作。是什么原因?

4 个答案:

答案 0 :(得分:1)

Sleep()的一般结构是:

again, see point (2)

if表达式为真时,它会执行if (condition) thingToDo 中的代码。 (我故意遗漏了可选的condition条款,因为它与此问题无关。)

因此,在您的第一个代码块中,thingToDoelseconditionname == null || name == ""。因此,如果用户输入空名称以响应提示,则会将名称设置为thingToDo

如果name = " visitor "包含多个语句,则必须将它们用大括号括起来,使其成为一个代码块。但如果它只是一个语句,那么大括号是可选的(尽管我推荐它们,请参阅Why is it considered a bad practice to omit curly braces?)。 " visitor "调用周围的大括号无关紧要,因为它超出了thingToDo语句。

您的第二次尝试是错误的,因为您已将条件更改为:

document.write()

这不是一个有效的表达式 - 您已将条件移动到条件中,但没有操作员将其与比较连接。

答案 1 :(得分:0)

因为它是不正确的语法

if ((name == null || name == "") name = " visitor ")"

如果未正确关闭

它应该是这样的

if((name==null||name=="")) name="visitor";

希望这有帮助

答案 2 :(得分:0)

我有3条建议

  1. 正确的代码是
  2. <script type = "text/javascript">
        var name = prompt("Please enter your name: ");
        if (name == null || name == "") 
        {
            name = 'visitor';
        }
        document.write("Hi " + name + " welcome to javascript.");
    </script>
    
    1. 请使用javascript中的单引号代替双引号。
    2. 最好使用库来检查变量的所有错误情况。因为它也可能是未定义的。这也使它更容易阅读。您可以使用库lodash并编写if(_.isString(name))

答案 3 :(得分:0)

if (name == null || name == "") name = " visitor "
{document.write("Hi " + name + " welcome to javascript.");}

这是不正确的语法。

它说(和做)是这样的:

if (name == null || name == "") {
      name = "visitor";
   }
document.write("Hi " + name + " welcome to javascript.");

name =“visitor”不是条件。这是一项任务。

在你的代码中,document.write...周围的大括号是无用的,并且对if语句不执行任何操作。

你不必在一行if语句周围使用大括号,但写这个的正确方法是:

if (name == null || name == "") 
    name = "visitor";
document.write("Hi " + name + " welcome to javascript.");

只有在条件后执行的代码只有一行时,上述操作才有效。任何其他代码都在if。

之外执行