在js代码中,经常会看见a=a||""这样的语句,下面就介绍几个||和&&的用法
a=a||"defaultValue";
与
if(a!){
a = "defaultValue";
}
和
if(a==null || a=="" a==undefined){
a = "defaultValue";
}
是等价的,要了解这个问题,就必须弄明白javascript中数据类型转换为布尔类型时的机制。
在javas
cript中数据类型分为"真值"和"假值",真值转换布尔类型时值为true,假值转换布尔类型时值为false,下面 是一些常见数据类型转换布尔型时的值:
值 布尔值
null FALSE
undefined FALSE
Object TRUE
function TRUE
0 FALSE
1 TRUE
0、1之外的数字 TRUE
字符串 TRUE
""(空字符串) FALSE
下面分析下"||" 和 "&&"运算符,在javas
cript中和java等其他语言中不太一样 在javas
cript中
"||" 如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。
var i=""||"真值";//->i="真值"
i="真值"||"其他真值";//->i="真值"
i="真值"||"";//->i="真值"
"&&" 如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。
var i=""&&"真值";//->i=""
i="真值"&&"其他真值";//->i="其他真值"
i="真值"&&"";//->i=""
实例:
var a = "123" || "456"; //a的值为123
var b = "123" && "456"; //b的值为456
var c = "" || "abc"; //c的值为abc
var c = "" && "abc"; //c的值为""
var d = null || "abc"; //d的值为abc
var d = null && "abc"; //d的值为null
var e = 0 || "abc"; //e的值为abc
var e = 0 && "abc"; //e的值为0