你不知道的JavaScript(八)逻辑运算
2015-05-23 09:54
204 查看
JS的逻辑运算结果和其他一些强类型语言差别比较大,也比较容易让人产生困惑,看下面的例子:
我们定义两个变量a、b,对a、b进行两次取反获取它们转换成boolean类型的值均为true。然后將变量a和变量b做逻辑运算,发现结果竟然不是true,而是”hello”。
为了明确JS逻辑运算的最终结果是怎样的,我们需要先了解一下JS中哪些类型的值在做逻辑判断的时候会被认为是false。
空字符串
数值类型(number)中的0和NaN
null类型
undefined类型
boolean类型中的false
执行上面代码对话框中弹出false,其他值在逻辑判断时均被认为是true。
接下来在来解释逻辑运算符||和&&的返回结果是怎么一回事:
事实上,JS以参与逻辑运算的最后一个值作为本次逻辑运算的最终结果,这句话理解起来可能有点困难,我们来看看下面的例子:
大家都知道 || 运算符是”一真则真”,num1转换为boolean类型为true,已经有一个”true”了,所以 || 运算符后面的部分没有被执行,也就是说str1根本就没有参与该逻辑运算。JS会把num1的值作为本次逻辑运算的结果。
而逻辑运算符&&则是”一假则假”,num1转换为boolean类型为true,能够决定该逻辑运算结果转换为boolean类型真假的是str1。所以JS以str1作为该逻辑运算的结果。
有了这些依据下面的逻辑运算结果就很容易判断了:
num2值为0,转换成boolean类型为false,
<script type="text/javascript"> var a = 40; var b = "hello"; alert(!!a);//true alert(!!b);//true alert(a && b);//alert hello </script>
我们定义两个变量a、b,对a、b进行两次取反获取它们转换成boolean类型的值均为true。然后將变量a和变量b做逻辑运算,发现结果竟然不是true,而是”hello”。
为了明确JS逻辑运算的最终结果是怎样的,我们需要先了解一下JS中哪些类型的值在做逻辑判断的时候会被认为是false。
空字符串
""
数值类型(number)中的0和NaN
null类型
undefined类型
boolean类型中的false
<script type="text/javascript"> //alert false if(""|| 0 || null || undefined || NaN || false ) { alert(true); }else { alert(false); } </script>
执行上面代码对话框中弹出false,其他值在逻辑判断时均被认为是true。
接下来在来解释逻辑运算符||和&&的返回结果是怎么一回事:
事实上,JS以参与逻辑运算的最后一个值作为本次逻辑运算的最终结果,这句话理解起来可能有点困难,我们来看看下面的例子:
var num1 = 40; var str1 = "hello"; alert(num1 || str1);//40 alert(num1 && str1);//hello
大家都知道 || 运算符是”一真则真”,num1转换为boolean类型为true,已经有一个”true”了,所以 || 运算符后面的部分没有被执行,也就是说str1根本就没有参与该逻辑运算。JS会把num1的值作为本次逻辑运算的结果。
而逻辑运算符&&则是”一假则假”,num1转换为boolean类型为true,能够决定该逻辑运算结果转换为boolean类型真假的是str1。所以JS以str1作为该逻辑运算的结果。
有了这些依据下面的逻辑运算结果就很容易判断了:
var num2 = 0; var str2 = "wrold"; alert(num2 || str2);//hello alert(num2 && str2);//0 var num3 = 40; var str3 = ""; alert(num3 || str3);//40 alert(num3 && str3);//""
num2值为0,转换成boolean类型为false,
num2 || str2逻辑运算的结果由str2决定。
num2 && str2逻辑运算中num2 已经为假,str2未参与逻辑运算,所以以num2作为该逻辑运算的结果。下面的一个例子也是同样的道理。
相关文章推荐
- 你不知道的JavaScript(八)逻辑运算
- 你不知道的JavaScript(八)逻辑运算
- JavaScript的Boolean逻辑运算探究
- JavaScript中设置默认值时需要注意的逻辑运算
- javascript里函数提升与逻辑运算
- JavaScript中的逻辑运算操作对象
- javascript中 逻辑运算
- JavaScript基础 逻辑运算与或非 && || !
- javascript 的比较运算与逻辑运算
- JavaScript基础 逻辑运算与或非 && || !
- javascript逻辑(&& ||)运算
- JavaScript 基础(1)ECMAScript(基础语法)——语法、数据类型、基本运算和逻辑运算
- 你所不知道的JavaScript的逻辑操作符
- (转)JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- JavaScript之逻辑与、或、非运算
- Javascript逻辑运算的返回值
- JavaScript中的 逻辑运算 又称boolean运算
- javaScript初级逻辑运算或且真假命题
- JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- javascript的||和&&逻辑运算