JavaScript运算符与流程控制详细教程

JavaScript运算符与流程控制详细教程

在JS(JavaScript)中只有数据的程序是静止的。我们需要对数据进行计算、比较,并根据结果决定程序下一步该做什么。这就是运算符和流程控制的用武之地。它们为程序注入了逻辑和决策能力。

1. 运算符

运算符允许我们对值进行操作。

算术运算符

执行数学计算。

let a = 10;
let b = 3;

console.log(a + b); // 加法,输出 13
console.log(a - b); // 减法,输出 7
console.log(a * b); // 乘法,输出 30
console.log(a / b); // 除法,输出 3.333...
console.log(a % b); // 取模(求余数),输出 1 (10除以3余1)

赋值运算符

为变量赋值。

let x = 10; // 简单赋值
x += 5;     // 等同于 x = x + 5; 现在 x 是 15
x -= 2;     // 等同于 x = x - 2; 现在 x 是 13
x *= 3;     // 等同于 x = x * 3; 现在 x 是 39

比较运算符

比较两个值,并返回一个布尔值(truefalse)。

console.log(10 > 5);  // 大于,输出 true
console.log(10 < 5);  // 小于,输出 false
console.log(10 >= 10); // 大于等于,输出 true
console.log(5 <= 4);  // 小于等于,输出 false

// 特别注意:相等性比较
console.log(10 == "10");  // 相等(只比较值,会进行类型转换),输出 true
console.log(10 === "10"); // 严格相等(比较值和类型),输出 false
console.log(10 != "10");  // 不相等,输出 false
console.log(10 !== "10"); // 严格不相等,输出 true

最佳实践:为了避免不可预料的类型转换错误,请始终使用 ===!==。​

逻辑运算符

用于组合多个布尔条件。

let isAdult = true;
let hasLicense = false;

// && (逻辑与):两边都为 true,结果才为 true
console.log(isAdult && hasLicense); // 输出:false

// || (逻辑或):至少一边为 true,结果就为 true
console.log(isAdult || hasLicense); // 输出:true

// ! (逻辑非):取反
console.log(!isAdult); // 输出:false

2. 流程控制:条件语句

根据条件是否成立,执行不同的代码分支。

if…else 语句

这是最基础的条件判断。

let hour = 14; // 下午2点

if (hour < 12) {
    console.log("Good morning!");
} else {
    console.log("Good afternoon!");
}
// 输出:Good afternoon!

else if

处理多个条件。

let score = 85;

if (score >= 90) {
    console.log("成绩优秀!");
} else if (score >= 75) {
    console.log("成绩良好!");
} else if (score >= 60) {
    console.log("成绩及格!");
} else {
    console.log("成绩不及格!");
}
// 输出:成绩良好!

三元运算符

if...else的简洁写法。

// 语法:condition ? exprIfTrue : exprIfFalse
let age = 20;
let canVote = (age >= 18) ? "可以投票" : "不能投票";
console.log(canVote); // 输出:可以投票

switch 语句

当一个变量需要与多个特定值进行比较时,switch比多个 else if更清晰。

let day = "Wednesday";
let dayType;

switch (day) {
    case "Monday":
    case "Tuesday":
    case "Wednesday":
    case "Thursday":
    case "Friday":
        dayType = "工作日";
        break; // break 关键字用于跳出switch,防止继续执行下一个case
    case "Saturday":
    case "Sunday":
        dayType = "周末";
        break;
    default: // 如果都不匹配,则执行default
        dayType = "无效的日期";
}
console.log(dayType); // 输出:工作日

3. 实战练习

编写一个程序,判断一个年份是否是闰年。

闰年规则:

  1. 年份能被4整除,但不能被100整除;或者
  2. 年份能被400整除。
let year = 2024;

if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
    console.log(year + "年是闰年。");
} else {
    console.log(year + "年不是闰年。");
}
// 输出:2024年是闰年。

总结

运算符让我们能够处理和比较数据,而条件语句则让程序(JavaScript)具备了根据判断结果执行不同路径的能力。这使得程序不再是线性的,而是变得“智能”。

发表评论