JavaScript数组判断赋值问题:解释`true ? xx==true : false`代码运行原理
代码逻辑拆解
1. 核心语法:三元运算符
代码里用的是JavaScript的三元条件运算符,是if else分支的简写形式,语法规则为:判断条件 ? 条件成立时返回的值 : 条件不成立时返回的值
2. 逐行逻辑说明
你给出的完整代码如下:
function checkIsArray(couldBeAnything) { var result = true ? Array.isArray(couldBeAnything) == true : false return result; }
- 首先
Array.isArray()是JS内置API,专门用来判断传入值是否为数组,调用后本身就会直接返回布尔值true/false。 - 给
result赋值的语句里,三元运算符的第一个判断条件固定写为true,意味着永远会返回冒号前的执行结果,也就是Array.isArray(couldBeAnything) == true的运算结果:- 当入参是数组时,
Array.isArray()返回true,true == true结果为true,result赋值为true - 当入参不是数组时,
Array.isArray()返回false,false == true结果为false,result赋值为false
- 当入参是数组时,
3. 对应if else写法
这段代码完全可以等价转换为你熟悉的if else格式,逻辑100%一致:
function checkIsArray(couldBeAnything) { var result; // 三元的第一个条件为true,永远进入if分支 if (true) { result = Array.isArray(couldBeAnything) == true; } else { result = false; } return result; }
代码冗余优化提示
这段代码其实存在不必要的冗余写法,以下两种简化写法效果完全相同:
// 简化写法1 function checkIsArray(couldBeAnything) { var result = Array.isArray(couldBeAnything); return result; } // 简化写法2 function checkIsArray(couldBeAnything) { return Array.isArray(couldBeAnything); }
内容的提问来源于stack exchange,提问作者nguyencuc2486
相关产品推荐
相关产品推荐

