JS中的逻辑运算符

摘要

运算符作为编程语言中重要的一部分,有着不可以替代的便捷性与实用性。对于大多数程序员来说,合理的使用运算符可以极大的提高工作效率与程度的健壮性。

就笔者的观察来看,在程序员的代码除了赋值运算符外使用最多的运算符应该就是逻辑运算符了。

运算符作为编程语言中重要的一部分,有着不可以替代的便捷性与实用性。对于大多数程序员来说,合理的使用运算符可以极大的提高工作效率与程度的健壮性。

就笔者的观察来看,在程序员的代码除了赋值运算符外使用最多的运算符应该就是逻辑运算符了。

对于多数程序员来说,逻辑运算符都是熟悉的。JS中的逻辑运算符分为三种:或(||)、与(&&)、非(!):

1、或(||)运算符

当运算符左右两边的值转换布尔类型后都为false时,则结果为假(false);当运算符左右两边的值转换布尔类型后只要有一个为true时,则结果便为真(true)。

2、与(&&)运算符

当运算符左右两边的值转换布尔类型后都为true时,则结果为真(true);当运算符左右两边的值转换布尔类型后只要有一个为false时,则结果便为假(false)。

3、非(!)运算符

当值转换布尔类型后为true时,取反便为false(假);当值转换布尔类型后为false时,取反便为true(真)。

当然了,有些时候我们往往会借助逻辑运算符的“特性”做一些特殊操作。例如“短路特性”,这个名词相信很多人都听说过。

什么是短路?用专业名字来解释就是:指电路或电路中的一部分被短接。笔者自己的理解是:对于从左到右执行的多条件代码,只要遇到不满足条件的,则右边剩余的代码不再“判断”的现象,称为短路特性。

对于短路特性,我们还要注意以下几点:

当||左右两边都不为布尔类型的值时:

1、如果第一个值转换布尔类型后为true,此时会出现“短路特性”并返回第一个值;

2、如果第一个值转换布尔类型后为false,第二个值转换布尔类型后为true,则返回第二个值;

3、如果两个值转换布尔类型后都为false,则返回第二个值。

当&&左右两边都不为布尔类型的值时:

1、如果第一个值转换布尔类型后为false,此时会出现“短路特性”并返回第一个值;

2、如果第一个值转换布尔类型后为true,第二个值转换布尔类型后为false,则返回第二个值;

3、如果两个值转换布尔类型后都为true,则返回第二个值。

如果你还是有些不确定,你可以在控制台里运行下面的代码试试:

  1. var a = 'JavaScript' || null;
  2. console.log(a); // JavaScript
  3. var b = null || 'JavaScript';
  4. console.log(b); // JavaScript
  5. var c = null || undefined;
  6. console.log(c); // undefined
  7. var d = null && 'JavaScript';
  8. console.log(d); // null
  9. var e = 'JavaScript' && null;
  10. console.log(e); // null
  11. var f = 'JS' && 'JavaScript';
  12. console.log(f); // 'JavaScript'

有些时候,我们在看别人写的代码时会发现类似这样的代码:

  1. callback && callback();

初看时,可能让人满头雾水。当你知道这其实是利用了逻辑运算符的短路特性时,你是不是有一种醍醐灌顶的感觉?

shaw

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: