JavaScript#JavaScript#条件判断#学习笔记
JavaScript 入门第三天:运算符、判断与类型转换
通过算术、比较和条件分支练习,建立读表达式和避免隐式转换陷阱的习惯。
3 分钟阅读
第三天的重点从“怎样得到元素”转到“怎样让程序作决定”。运算符负责计算,条件语句负责根据计算结果选择路径。
算术运算要分清副作用和结果
除加减乘除外,取余 % 常用于判断整除、奇偶和周期:
const isEven = number % 2 === 0
const weekdayIndex = day % 7
++ 会修改变量本身,而前置和后置的表达式结果不同:
let value = 10
const after = value++ // after 是 10,value 变为 11
const before = ++value // before 和 value 都是 12
为了减少阅读负担,业务代码里通常更愿意写清楚 value += 1,并避免把自增塞进复杂表达式。
比较默认使用严格相等
比较运算符会产生布尔值。=== 和 !== 同时比较类型和值,是更可靠的默认选择:
console.log(1 === '1') // false
console.log(1 == '1') // true,不建议依赖这种转换
对象的相等比较的是引用是否相同,不是内部内容是否长得一样:
console.log({} === {}) // false
const profile = {}
console.log(profile === profile) // true
if 和 switch 都是在选择分支
当条件为真时,if 执行对应代码块;多个条件要按优先级从上到下排列:
if (score >= 90) {
level = 'A'
} else if (score >= 60) {
level = 'B'
} else {
level = 'C'
}
当同一个值需要匹配多个固定选项时,switch 会更直观。每个 case 结束后通常要写 break,否则会继续落入后续分支:
switch (command) {
case 'start':
run()
break
default:
showHelp()
}
类型转换可以发生,但不该成为猜谜题
JavaScript 会在运算时进行隐式转换,例如 '1' * 2 得到 2,而 '1' + 2 得到 '12'。条件判断中,false、0、空字符串、null、undefined 和 NaN 会被当作假值,其余值通常为真。
这些规则有助于理解旧代码,但书写时应主动表达意图:
const amount = Number(input.value)
const label = String(id)
const enabled = Boolean(config.enabled)
今天最值得保留的检查顺序是:先写出每个操作数的类型和值,再判断运算符会返回什么。这样遇到看似“奇怪”的结果时,就不需要靠背结论。