为何三元运算符被视为表达式而非语句?
为什么三元运算符是表达式,而if/else是语句?
核心区别很直接:表达式的核心是产生一个值,语句的核心是执行一个动作(不一定返回值)。
你觉得三元运算符是if/else的简写,但二者的设计目标完全不同:
if/else是用来控制代码执行流程的,它的作用是根据条件决定执行哪一段代码块——这段代码可以是赋值、打印、循环等任意动作,但它本身不产生值,没法直接放到需要值的场景里(比如变量赋值的右侧、函数参数位置)。
举个例子:// 合法的if/else语句 if (a > b) { max = a; } else { max = b; } // 这样写会报错,因为if/else没有返回值 // let max = if (a > b) { a } else { b };三元运算符
condition ? val1 : val2从设计之初就是为了根据条件返回一个值,它的整个运算结果就是val1或者val2,所以可以直接用在任何需要值的地方:// 直接赋值给变量 let max = a > b ? a : b; // 作为函数参数 console.log("最大值是:", a > b ? a : b); // 嵌套进其他表达式 let result = (a > b ? a : b) * 2;
说白了,if/else是“选一段代码来执行”,三元运算符是“选一个值来返回”——这就是为什么一个是语句,一个是表达式,哪怕逻辑相似,定位却完全不同。
内容的提问来源于stack exchange,提问作者Unknown User
相关产品推荐
相关产品推荐

