JavaScript中赋值、逻辑与及三元运算符执行顺序咨询
代码执行顺序解析:
envArr && envArr[0] ? envArr[0] : "env1" 这行代码是**短路逻辑运算符(&&)和三元运算符(?:)**的组合,JavaScript 里&&的优先级比?:高,所以执行顺序是先算&&部分,再用结果做三元判断,分情况拆解:
你的代码场景(envArr未赋值,值为undefined)
- 先计算
envArr && envArr[0]- undefined 属于 JavaScript 里的假值,
&&有短路特性:左边为假时,直接返回左边的值,不会执行右边的envArr[0],所以这部分结果是undefined。
- undefined 属于 JavaScript 里的假值,
- 执行三元判断:
undefined ? envArr[0] : "env1"- 条件是假值(undefined),所以执行冒号后的表达式,最终
envName被赋值为"env1"。
- 条件是假值(undefined),所以执行冒号后的表达式,最终
其他场景补充
- 如果
envArr = ["prod"]:envArr是真值,&&会继续执行右边的envArr[0],得到"prod",所以envArr && envArr[0]结果是"prod"(真值)。- 条件为真,执行冒号前的
envArr[0],envName被赋值为"prod"。
- 如果
envArr = []:- 空数组是真值,
&&执行envArr[0]得到undefined,所以envArr && envArr[0]结果是undefined。 - 条件为假,
envName被赋值为"env1"。
- 空数组是真值,
内容的提问来源于stack exchange,提问作者user3055964
相关产品推荐
相关产品推荐

