js 逻辑“或”运算符 (||) 精妙之用
来源:互联网 发布:数据机房装修效果图 编辑:程序博客网 时间:2024/05/09 20:14
逻辑“或”运算符 (||)
对两个表达式执行逻辑“或”。
result = expression1 || expression2
如果两个表达式中有一个或两个等于 True,则 result 是 True。(expression1 执行的结果不为null或undefined或0或空串时,则 result 等于 expression1 的返回值,而expression2 就不再执行了)
JScript 使用下面的规则来把非 Boolean 值转换为 Boolean 值:
1、所有对象都被认为是 true
2、字符串当且仅当为空时才被认为是 false
3、null 和 undefined 被认为是 false
4、数字当且仅当为 0 时才是 false
对两个表达式执行逻辑“或”。
result = expression1 || expression2
如果两个表达式中有一个或两个等于 True,则 result 是 True。(expression1 执行的结果不为null或undefined或0或空串时,则 result 等于 expression1 的返回值,而expression2 就不再执行了)
JScript 使用下面的规则来把非 Boolean 值转换为 Boolean 值:
1、所有对象都被认为是 true
2、字符串当且仅当为空时才被认为是 false
3、null 和 undefined 被认为是 false
4、数字当且仅当为 0 时才是 false
---------------------------------------------------------------
""是最简单的表达式,它不为空、null、undefined、0,因此表达式的值为真(非假)。
分析一下最常见的 if( a>1 || a<10 ){...} ,里面的 if 是怎样执行的呢?假使a等于5,小括号里的表达 式首先 a>1 满足条件,即返回true,至于是不是 a<10 就不在执行。a>1的返回值类型是布尔类型的,刚好满足 if 所 需的参数类型,因此条件语句继续往下执行。
再看:
var a=5;
if( a || b ){...}
小括号里的表达式首先执行 a,其返回值为整数5,即不是0也不是null与undefined,所以或运算表达式忽略了 b 返回 a 的值 5(不是 true也不是false,这点尤需注意),这时相当于 if(5){....},if在判断其参数的返回值类型时把参数值转换为布尔类型,根据规则(如 手册中云)把非布尔类型的值转换为布尔类型,5 的值即为true,因此 if 条件语句继续往下执行。
分析一下最常见的 if( a>1 || a<10 ){...} ,里面的 if 是怎样执行的呢?假使a等于5,小括号里的表达 式首先 a>1 满足条件,即返回true,至于是不是 a<10 就不在执行。a>1的返回值类型是布尔类型的,刚好满足 if 所 需的参数类型,因此条件语句继续往下执行。
再看:
var a=5;
if( a || b ){...}
小括号里的表达式首先执行 a,其返回值为整数5,即不是0也不是null与undefined,所以或运算表达式忽略了 b 返回 a 的值 5(不是 true也不是false,这点尤需注意),这时相当于 if(5){....},if在判断其参数的返回值类型时把参数值转换为布尔类型,根据规则(如 手册中云)把非布尔类型的值转换为布尔类型,5 的值即为true,因此 if 条件语句继续往下执行。
----------------------------------------------------------------------
再看看实际的应用:
function test(a1,a2){
var x = a2 || a1;
//var x = a2===undefined ? a1 : a2;
alert(x);
}
test("abc");
test("abc","def");
第一次执行 test 时只传了一个参数,因此在 test 内部获取的 a2 恒等于 undefined,即类型属于false,或运算将继续执行双 竖线右边的表达式 a1 ,a1的值为字符串"abc",不是false,因此或运算表达式返回 "abc" 并赋值给 x。
对于此类型的表达方法 a2 || a1 可以这样理解:优先取 a2, a1 排后。按这样的理解,看看下面的:
function test(a1,a2,a3,a4,a5){
var x = a5 || a4 || a3 || a2 || a1;
alert(x);
}
test("abc","def","ghi");
var x = a2 || a1;
//var x = a2===undefined ? a1 : a2;
alert(x);
}
test("abc");
test("abc","def");
第一次执行 test 时只传了一个参数,因此在 test 内部获取的 a2 恒等于 undefined,即类型属于false,或运算将继续执行双 竖线右边的表达式 a1 ,a1的值为字符串"abc",不是false,因此或运算表达式返回 "abc" 并赋值给 x。
对于此类型的表达方法 a2 || a1 可以这样理解:优先取 a2, a1 排后。按这样的理解,看看下面的:
function test(a1,a2,a3,a4,a5){
var x = a5 || a4 || a3 || a2 || a1;
alert(x);
}
test("abc","def","ghi");
0 0
- js 逻辑“或”运算符 (||) 精妙之用
- 逻辑与和逻辑或运算符
- “逻辑和”与 “逻辑或”运算符
- JavaScript之逻辑与、或、非运算
- javaScript逻辑或操作符运算规则
- 逻辑与和逻辑或运算符返回值
- 逻辑与和逻辑或运算符重载
- 括号,逻辑与,逻辑或--运算符重载
- js 与或运算符 || &&
- JS中的逻辑运算符与逻辑或
- js逻辑运算符——逻辑与&&、逻辑或||
- 小括号'()'运算符重载、逻辑与'&&'、逻辑或'||'运算符重载说明(需要了解)
- java 的与& ,或| ,非~ 运算符计算方法逻辑
- C#运算符之异或运算
- JavaScript中的逻辑与运算、逻辑或运算
- JavaScript中的逻辑与运算、逻辑或运算
- js中的逻辑或和逻辑与
- js 与或运算符 || && 妙用
- 一次缓存事故排查
- Codeforces Round #276 (Div. 1) B
- 编程珠玑第二版第三章习题(Java)
- 微信网页版登陆实现
- Linux makefile 教程 非常详细,且易懂
- js 逻辑“或”运算符 (||) 精妙之用
- 同一个SQL语句 会由于表的数据(量、和值个数不同等)变化而执行不同的执行计划
- 对类的进一步说明:包括合成存取方法、多个参数的方法等
- jms异步远程通信
- mysql高可用性探究
- $.ajax()方法解析
- I2C总线原理及应用实例
- zoj 3471 Most Powerful(状压)
- nyoj 题目673 悟空的难题(下标排序)