JS if...else

🌙
手机阅读
本文目录结构

功能

当指定条件为真,if 语句会执行一段语句。如果条件为假,则执行另一段语句。

演示

function testNum(a) {
  if (a > 0) {
    return "positive";
  } else {
    return "NOT positive";
  }
}

console.log(testNum(-5));
// expected output: "NOT positive"

语法

if (condition){
   statement1
}[else{
   statement2
}]

condition

值为真或假的表达式

statement1

当 condition 为真时执行的语句。可为任意语句,包括更深层的内部 if 语句。

要执行多条语句,使用块语句({ … })将这些语句分组;若不想执行语句,则使用空语句。

statement2

如果 condition 为假且 else 从句存在时执行的语句。可为任意语句,包括块语句和嵌套的 if 语句。

说明

多层 if…else 语句可使用 else if 从句。注意:在 Javascript 中没有 elseif (一个单词)关键字。

if (condition1)
   statement1
else if (condition2)
   statement2
else if (condition3)
   statement3
...
else
   statementN

要看看它如何工作,可以调整下嵌套的缩进:

if (condition1)
   statement1
else
   if (condition2)
      statement2
   else
      if (condition3)
...

要在一个从句中执行多条语句,可使用语句块({ … })。

通常情况下,一直使用语句块是个好习惯,特别是在涉及嵌套 if 语句的代码中:

if (condition) {
   statements1
} else {
   statements2
}

不要将原始布尔值的 true 和 false 与 Boolean 对象的真或假混淆。

任何一个值,只要它不是 undefined、null、 0、NaN 或空字符串(""),那么无论是任何对象,

即使是值为假的 Boolean 对象,在条件语句中都为真。例如:

var b = new Boolean(false);
if (b) //表达式的值为true

示例

使用 if…else

if (cipher_char === from_char) {
   result = result + to_char;
   x++;
} else {
   result = result + clear_char;
}

使用 else if

注意,Javascript 中没有 elseif 语句。但可以使用 else 和 if 中间有空格的语句:

if (x > 5) {
 /* do the right thing */
} else if (x > 50) {
 /* do the right thing */
} else {
 /* do the right thing */
}

条件表达式中的赋值运算

建议不要在条件表达式中单纯的使用赋值运算,因为粗看下赋值运算的代码很容易让人误认为是等性比较。比如,不要使用下面示例的代码:

if (x = y) {
   /* do the right thing */
}

如果你需要在条件表达式中使用赋值运算,用圆括号包裹赋值运算。例如:

if ((x = y)) {
   /* do the right thing */
}

规范

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
if statement
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
if statement
Standard
ECMAScript 5.1 (ECMA-262)
if statement
Standard
ECMAScript 3rd Edition (ECMA-262)
if statement
Standard
ECMAScript 1st Edition (ECMA-262)
if statement
Standard Initial definition

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了