<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 ")
代码停止工作。是什么原因?
答案 0 :(得分:1)
Sleep()
的一般结构是:
again, see point (2)
当if
表达式为真时,它会执行if (condition) thingToDo
中的代码。 (我故意遗漏了可选的condition
条款,因为它与此问题无关。)
因此,在您的第一个代码块中,thingToDo
为else
,condition
为name == 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条建议
<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>
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。
之外执行