条件语句 Java脚本:if、else、else if

⚡ 智能摘要

条件语句 Java脚本通过测试条件来决定运行哪个代码块,而 if、if…else 和 if…else if…else 形式几乎涵盖了初学者脚本所需的所有分支决策。

  • 🔘 语法: if 语句只有在括号内的条件为真时才会执行其代码块。
  • ☑️ 两个分支: if…else 语句提供了一个回退代码块,当条件为假时,该代码块将运行。
  • 许多分支: 链式 else if 会按顺序测试多个条件,并在遇到第一个匹配项时停止。
  • 🧪 速记: 三元运算符将简单的 if…else 语句简化为一个返回值的表达式。
  • 🛠️ 另一种方法: 与冗长的链式语句相比,switch 语句能更简洁地将一个值与多个固定选项进行比较。
  • 📊 陷阱: 假值、多余的赋值运算符和缺失的大括号是导致大多数条件错误的原因。

条件语句 Java脚本

Java脚本条件语句

条件语句主要有三种类型 JavaScript.

  1. if 语句:'if' 语句根据条件执行代码。
  2. if...else 语句:if…else 语句由两个代码块组成;当条件为真时,执行第一个代码块,当条件为假时,执行第二个代码块。
  3. if…else if…else 语句:当需要测试多个条件并且需要根据哪个条件为真执行不同的代码块时,使用 if...else if...else 语句。

下面将逐一分析这三种形式,包括它们的语法和一个可运行的示例。无论脚本位于何处,规则都相同。 在页面内部或外部文件中以及该条件是写在顶层还是写在内部。 function.

如何使用条件语句

条件语句用于根据不同的条件决定执行流程。如果条件为真,则可以执行一个操作;如果条件为假,则可以执行另一个操作。

下图将这个想法比作岔路口:一个条件只评估一次,控制流向真分支或假分支,绝不会同时流向两者。

流程图显示 Java脚本条件分支为真路径和假路径

如果声明

语法:

if(condition)
{
	lines of code to be executed if condition is true
}

您可以使用 if 如果您只想检查特定条件,请使用此语句。当括号内的表达式求值为真时, true代码块运行;当其计算结果为 false解释器直接跳过它,脚本继续执行下一条语句。

自己尝试一下:

<html>
<head>
	<title>IF Statments!!!</title>
	<script type="text/javascript">
		var age = prompt("Please enter your age");
		if(age>=18)
		document.write("You are an adult <br />");
		if(age<18)
		document.write("You are NOT an adult <br />");
	</script>
</head>
<body>
</body>
</html>

该示例会询问访问者的年龄,然后对该值进行两次测试:一次测试 18 岁及以上,一次测试 18 岁以下。因为两次测试分别针对 18 岁及以上和 18 岁以下。 if 使用的是语句而不是 else每次页面加载时都会评估这两个条件。

现代对应词: 以上代码与已发布版本完全一致。目前 Java脚本中通常使用相同的逻辑编写。 let or const 而不是 var, console.log() or textContent 而不是 document.write(),并且没有 type="text/javascript" 该属性在 HTML5 中变为可选。

如果…否则语句

语法:

if(condition)
{
	lines of code to be executed if the condition is true
}
else
{
	lines of code to be executed if the condition is false
}

您可以使用 if...else 如果你需要检查一个条件,并针对每个结果执行不同的代码块,那么可以使用以下语句。这两个代码块中总会有一个执行,因此不需要单独的第二次测试。

自己尝试一下:

<html>
<head>
	<title>If...Else Statments!!!</title>
	<script type="text/javascript">
		// Get the current hours
		var hours = new Date().getHours();
		if(hours<12)
		document.write("Good Morning!!!<br />");
		else
		document.write("Good Afternoon!!!<br />");
	</script>
</head>
<body>
</body>
</html>

服务 new Date().getHours() 返回浏览器时钟的当前小时数,数值范围为 0 到 23。小于 12 的值会显示早安问候语,其他所有值都会被忽略。 else 科。

如果…否则 如果…否则语句

语法:

if(condition1)
{
	lines of code to be executed if condition1 is true
}
else if(condition2)
{
	lines of code to be executed if condition2 is true
}
else
{
	lines of code to be executed if condition1 is false and condition2 is false
}

您可以使用 if...else if...else 如果你想检查两个以上的条件,可以使用语句。条件会从上到下依次评估,执行会在第一个为真的条件处停止,最后一个条件则继续执行。 else 当没有一个选项匹配时,它可以作为总选项。

自己尝试一下:

<html>
<head>
	<script type="text/javascript">
		var one = prompt("Enter the first number");
		var two = prompt("Enter the second number");
		one = parseInt(one);
		two = parseInt(two);
		if (one == two)
			document.write(one + " is equal to " + two + ".");
		else if (one<two)
			document.write(one + " is less than " + two + ".");
		else
			document.write(one + " is greater than " + two + ".");
	</script>
</head>
<body>
</body>
</html>

注意两次调用 parseInt()返回的值 prompt() 它们是字符串,因此如果不进行转换就进行比较,将会比较文本而不是数字,并将“9”报告为大于“10”。

三元 Operator:if…else 的简写

if...else 块只能在两个值之间进行选择,条件(三元)运算符用单个表达式表达相同的决策。它是唯一一个 Java脚本运算符,接受三个操作数:条件、问号、条件为真时使用的值、冒号和条件为假时使用的值。

// if...else form
let message;
if (age >= 18) {
  message = "adult";
} else {
  message = "minor";
}

// same decision as a ternary expression
let label = age >= 18 ? "adult" : "minor";

当三元运算符能够提高代码可读性时,请使用它,而不仅仅是为了节省行数:

  • 非常适合: 从两个值中选择一个来赋值、返回或丢弃到模板字符串中。
  • 不合适: 执行多个语句、调用函数产生副作用或需要自己的局部变量的分支。
  • 避免嵌套: 三元运算符嵌套三元运算符比一个三元运算符更难阅读。 else if 链。

switch语句 vs if…else if…else

很久了 else if 将同一变量与不同的固定值进行比较的链式结构通常更清晰易懂。 switch 语句。该 switch 语句会对其表达式进行一次求值,然后跳转到匹配的语句。 case; break 阻止执行进入下一个案例,并且 default 扮演最终角色 else.

switch (day) {
  case "Sat":
  case "Sun":
    document.write("Weekend");
    break;
  default:
    document.write("Weekday");
}

这两种结构并非在所有情况下都可以互换:

比较点 如果……否则如果……否则 开关
测试类型 任何布尔表达式,包括范围,例如 hours<12 仅与固定值相等
比较方法 无论你写什么运算符 严格比较,所以 "5" 不匹配 5
可读性 最适合几种互不相关的疾病 最适合用于多个同一变量的值
常见错误 忘记尾随 else 忘记 break这样一来,执行就会失败。

真值与假值 Java脚本条件

条件不一定非得是比较关系。 Java脚本会先将括号内的所有内容转换为布尔值,这就是为什么 if (name) 这是有效代码。只有六个值会转换为 false: false, 0空字符串 null, undefinedNaN其他一切都是真值,包括字符串 "0"一个空数组和一个空对象。

大多数初学者脚本中的条件语句错误都源于以下几种常见错误:

  • 赋值而非比较: if (x = 5) 赋值且始终为真; if (x === 5) 比较。
  • 宽松的平等政策带来的意外: == 在比较之前转换类型,因此 "" == 0 属实。更喜欢 ===.
  • 牙套缺失: 也完全不需要 {} 只有下一个单独的语句属于该分支,与上面的示例完全一样。
  • 未转换的输入: 值来自 prompt() 表单字段直到……都是字符串 parseInt() or Number() 将它们转换。
  • 无法访问的分支:else if 如果采用链式检验,则应将最严格的条件放在首位,否则更宽泛的早期检验总是会胜出。

常见问题

一个单一的 = 意外地赋予了一个值,使条件为真。 == 在转换类型后进行比较,因此 "" == 0 是真的。 === 同时比较值和类型,是更安全的默认设置。

人工智能助手可以复述不熟悉的内容 else if 用通俗易懂的语言描述一个循环,给出每个分支的输入值建议,并标记一个永远不可能成立的条件。务必亲自运行代码,因为解释只是建议而非证明。

通常是的。 GitHub 副驾驶 根据注释或部分条件完成分支代码。检查它选择的边界值,因为生成的 > 你需要的地方 >= 很容易被忽略。

没有语言限制。任何语句都可以出现在分支内,包括进一步的语句。 if超过两层之后,逻辑就难以理解了,所以要将测试与……结合起来。 && 或者提前返回。

不。如果没有花括号,分支只能执行下一个语句,这就是为什么上面的例子可以正常运行。但仍然建议添加花括号,因为之后添加的第二行语句会静默地跳出分支。

&& 只有当双方都说真话时,这个说法才成立。 || 当等式两边任一边成立时,等式也为真。两者都采用短路求值:一旦结果确定,等式右侧就不会再被计算。

getHours() 返回访问者自己时钟的当前小时数,数值范围为 0 到 23,因此与 12 进行比较即可将一天分为上午和下午,无需任何额外的解析。

序号 Java脚本使用了两个不同的关键字, else if,它们之间有一个空格。单个词 elseif 属于 PHP 和某些模板语言,在浏览器中会引发语法错误。

总结一下这篇文章: