美文网首页优美编程
expression1 && expressio

expression1 && expressio

作者: 小遁哥 | 来源:发表于2018-10-04 20:35 被阅读9次

expression1 && expression2

如果new Boolean(expression1) 为 true 就执行expression2 并返回expression2的返回值,否则返回expression1的返回值

适当的使用可减少不必要if、else结构,提升代码的语义化,如下

var name = "wx";
var arr = [];
var length = name && arr.push(name);
console.log(length);//1

注意new Boolean() 和 隐式类型转换是有区别的!

看下面的例子

let name = 0;
//var name = 0;
var arr = [];
var length = name && arr.push(name);
console.log(length);

因为new Boolean(0) 是false 所以后续不执行

[]  == false //true
0 == false //true
"0" == false //true
new Boolean([]) === true //true
new Boolean("0") === true //true

隐式类型转换 可参见
https://www.cnblogs.com/chenmeng0818/p/5954215.html

|| 和 && 搭配也可以简化许多写法

expression1 && expression2 || expression3
等同于 ( expression1 && expression2) || expression3

var obj = {
  age:12
}
function execute(params){
  let age = params && params.age || 13
  return age
}

// var age = execute(obj);
var age = execute();
console.log(age);

注意如何obj.age 等于0时还是会返回13的

把上述代码改成if、else结构就更能直观的体会了。

Tips:
()这个语法是个好东西
避免语法错误,函数的自执行

(function(){
  console.log("小遁")
})();

执行函数里面的表达式,获取到执行结果与后面拼接

 var arr;
  arr || (arr=[]).push(1);
  console.log(arr)

多用于动态的创建二维数组,

相关文章

网友评论

    本文标题:expression1 && expressio

    本文链接:https://www.haomeiwen.com/subject/lwwmoftx.html