三目运算符

  在js中使用三目运算符能够很大程度上提高代码的,简洁度,但是三目运算符对于js功底不够深厚的同学来说,又实在有些费解和难以记忆,在此简单的做个备忘。

  三元运算符的表达式:

(expression1)  ?  (expression2)  :  (expression3)

  在  expression1  求值为  true  时的返回值为  expression2  ,在expression1  求值是  false  时的返回值值为  expression3  。

示例:

var hash = isString(hash) ? hash : isNumber(hash) ? hash.toString() :$location.hash;

上面的代码等价于

if(isString(hash)){
    return hash;
}else{
    if(isNumber(hash)){
        return hash.toString();
    }else{
        return $location.hash;
    }
}

  还有一种情况是,我们不单单要在结果中进行一种运算,而是多个,那么要怎么办呢?

示例

let log = console.log.bind(console);
let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},
     {id: 0, name: "重复"},   
];

let obj = {};

person = person.reduce((cur,next) => {
    obj[next.id] ? "" : (obj[next.id] = true , cur.push(next));
    return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
log(person);

  在上面的代码中我们可以看到,这里我们先给obj对象的属性进行复制,而后执行了reduce的逻辑,只要把处理逻辑用小括号包裹起来并且用逗号分隔即可。

  以上是我对三目运算符的一点粗浅的理解和实践,如有疏漏,欢迎斧正。

原文地址:https://www.cnblogs.com/gitByLegend/p/11399349.html