关于JavaScript中arr.sort内嵌套三元表达式冒号含义的疑问
关于嵌套三元运算符的冒号解释
你代码里的冒号是JavaScript三元运算符的核心语法之一,用来分隔「条件不成立时的返回结果」。你写的这段是嵌套的三元运算,我们拆解来看:
原代码:
arr.sort((a, b) => a < b ? 1 : a > b ? -1 : 0);
它的逻辑等价于下面更易懂的if-else结构:
arr.sort((a, b) => { if (a < b) { // 当a比b小,返回1,sort会把a排在b后面(实现降序) return 1; } else { // 第一个条件不成立时,进入这个分支,再判断a和b的大小 if (a > b) { // a比b大,返回-1,sort会把a排在b前面 return -1; } else { // a和b相等,返回0,两者位置不变 return 0; } } });
简单说,a < b ? 1 : ...里的冒号就是告诉JS:如果a < b不成立,就执行冒号后面的逻辑(也就是第二个三元判断a > b ? -1 : 0)。
整个代码的作用是给数组做降序排序——大的元素在前,小的在后,相等的元素位置不变。
内容的提问来源于stack exchange,提问作者abdoo agwa
相关产品推荐
相关产品推荐

