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)
多用于动态的创建二维数组,
网友评论