您的位置:首页 > 数据库 > MySQL

Navicat异地自动备份MySQL方法详解(图文)

2012-12-26 15:02 501 查看
逻辑“或”运算符 (||)

对两个表达式执行逻辑“或”。

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 条件语句继续往下执行。

----------------------------------------------------------------------
再看看实际的应用:

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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: