Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript 中的逻辑运算符和短路表达式 #60

Open
felix-cao opened this issue Sep 4, 2018 · 0 comments
Open

JavaScript 中的逻辑运算符和短路表达式 #60

felix-cao opened this issue Sep 4, 2018 · 0 comments

Comments

@felix-cao
Copy link
Owner

felix-cao commented Sep 4, 2018

逻辑运算 Logical operators,又称“布尔运算”
短路计算 Short-circuit evaluation

短路表达式,JS逻辑运算有一个短路计算原则, MDN描述如下:由于逻辑表达式的运算的顺序是从左到右的,利用其规则进行“短路”运算。

JS逻辑运算符的说明:

运算法 示例 说明
逻辑与(&&) expr1 && expr2 如果expr1 能转换成false则返回expr1,否则返回expr2
因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false.
逻辑或(ll) expr1 ll expr2 如果expr1能转换成true则返回expr1,否则返回expr2.
因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;
二者操作结果都为false时返回false.
逻辑非(!) !expr 如果单个表达式能转换为true的话返回false,否则返回true.

能够转换为false的表达式有:""(空字符串), 0和NaN, false, null, undefined, 参考 8 个falsy值

短路计算 Short-circuit evaluation

由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行"短路"计算:

  • false && (anything) 短路计算的结果为false.
  • true || (anything) 短路计算的结果为 true

理解为逻辑中断。
是否执行第二个语句(操作数)取决于第一个操作数的结果

案例

  • 在需要访问某个对象的属性时,使用这个特性可以事先检测该对象是否为空:var name = o && o.getName();
  • 或运算可以用来设置默认值:var name = otherName || “default”;
@felix-cao felix-cao changed the title JS中的逻辑运算符和短路表达式 JavaScript 中的逻辑运算符和短路表达式 Oct 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant