|| 和 && 通常使用在条件表达式中,但是由于javascript语言的特殊性,这两个符号又被开发出了特别的使用技巧。
最基本的用法
console.log(true && true); console.log(true && false); console.log(false && true); console.log(false && false); console.log(true || true); console.log(true || false); console.log(false || true); console.log(false || false);
|
这是所有的编程语音通用的使用方法,毋庸置疑。
javascript中可以这么用
var target, num; target = undefined || 'defaultValue'; num = 0 || 1;
|
你可以看成这样:
var target; target = false || 'defaultValue'; num = false || 1;
|
因为在javascript中Object、function、非0的整数和字符串都为true
,undefined、null和空字符串”” 为false
。
但是javascript中却可以返回为true
表达式的值,应该理解为“真值”和“假值”更贴切。
‘||’在javascript中的规则:如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。
console.log('真值'||''); console.log(undefined||object);
|
‘&&’在javascript中的规则:如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。
console.log(1 === 1 && 2) console.log(0 === 1 && 2)
|
于是有了高逼格的javascript代码
var n=1; ((n === 1) && (n = 3)) || ((n === 3) && (n = 6)) || (n = 2); ((n === 1) && (n = 3)) || ((n === 3) && (n = 6)) || (n = 2); ((n === 1) && (n = 3)) || ((n === 3) && (n = 6)) || (n = 2); if(n === 1) { n = 3; } else if(n === 3) { n = 6; } else { n = 2; }
|