“||”和“&&”的高級用法
&&:從左往右依次判斷,當(dāng)當(dāng)前值為true則繼續(xù)仇奶,為false則返回此值(是返回未轉(zhuǎn)換為布爾值時的原值哦)
|| : 從左往右依次判斷领炫,當(dāng)當(dāng)前值為false則繼續(xù),為true則返回此值(是返回未轉(zhuǎn)換為布爾值時的原值哦)
// => aaa
var attr = true && 4 && "aaa";
// => 0
var attr = true && 0 && "aaa";
// => 100
var attr = 100 || 12;
// => e
var attr = "e" || "hahaha"
// => hahaha
var attr = "" || "hahaha"
多次判斷的賦值
/*
x>=15時 => 4
x>=12時 => 3
x>=10時 => 2
x>=5時 => 1
x<5時 => 0
*/
console.log((x>=15 && 4) || (x>=12 && 3) || (x>=10 && 2) || (x>=5 && 1) || 0);
對象形式的變量合體
/*
x=15 時 => 4
x=12 時 => 3
x=10 時 => 2
x=5 時 => 1
其它 => 0
*/
console.log( {'5':1,'10':2,'12':3,'15':4}[x] || 0 );
用于執(zhí)行語句
if(a >=5){alert("你好");}
//可以寫成:
a >= 5 && alert("你好");
例如
假如說現(xiàn)在我們有一個需求:有一個成長速度麻昼,
成長速度為5時塞关,顯示1個箭頭蜒犯,
成長速度為10時,顯示2個箭頭硫戈,
成長速度為15時锰什,顯示3個箭頭,
成長速度為20時丁逝,顯示4個箭頭汁胆。
var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==15 && 3) || (add_step==20 && 4) || 0;
var add_level={'5':1,'10':2,'15':3,'20':4}[add_step] || 0;
if(a==undefined){
a = {}
}else{
a = a;
}
//可以寫成
a = a || {};
優(yōu)雅的取整
let a = ~~2.33;
let b = 2.33 | 0;
let c = 2.33 >>0;
let d = 2.33 <<0;
let e= 2.33 ^ 0;
console.log(a,b,c,d,e) //2
優(yōu)雅的將字符串轉(zhuǎn)成數(shù)字
let a = '123';
let b = '123,4567';
let c = a *1;
let d = ~~b * 1;
let e = +a;
console.log(typeof a); // String
console.log(typeof b); // String
console.log(typeof c); // Number
console.log(typeof d); // Number
console.log(typeof e); // Number