JavaScript到精髓JavaScript 逻辑运算符

Posted 张清悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript到精髓JavaScript 逻辑运算符相关的知识,希望对你有一定的参考价值。

javascript逻辑运算符

一、 逻辑运算符

运算符描述
!非运算符,表示取反
&&与(且)运算符
||或运算符
? :三元条件运算符(也叫三目条件运算符)

1.1取反运算符

取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成falsefalse变成true

!true // false
!false // true

对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都为false

  • undefined
  • null
  • false
  • 0
  • NaN
  • 空字符串(''
!undefined // true
!null // true
!0 // true
!NaN // true
!"" // true

!54 // false
!'hello' // false

// 上面代码中,不管什么类型的值,经过取反运算后,都变成了布尔值。

1.2与(且)运算符

且运算符(&&)往往用于多个表达式的求值。

它的运算规则是:如果第一个运算子的布尔值为true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。

't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""

var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1

// 上面代码的最后一个例子,由于且运算符的第一个运算子的布尔值为`false`,则直接返回它的值`0`,而不再对第二个运算子求值,所以变量`x`的值没变。

这种跳过第二个运算子的机制,被称为“短路”。

且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值。如果所有表达式的布尔值都为true,则返回最后一个表达式的值。

true && 'foo' && '' && 4 && 'foo' && true
// ''

1 && 2 && 3
// 3

// 上面代码中,例一里面,首次出现布尔值为`false`的表达式为第三个表达式,所以得到一个空字符串。例二里面,所有表达式的布尔值都是`true`,所有返回最后一个表达式的值`3`。

1.3或运算符

或运算符(||)也用于多个表达式的求值。它的运算规则是:如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值。

't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""

短路规则对这个运算符也适用。

var x = 1;
true || (x = 2) // true
x // 1

// 上面代码中,或运算符的第一个运算子为`true`,所以直接返回`true`,不再运行第二个运算子。所以,`x`的值没有改变。

1.4 三元条件运算符

三元条件运算符:表达式 1 ? 表达式 2 : 表达式 3。如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。

// 三元条件运算符:表达式 1 ? 表达式 2 : 表达式 3
2 > 1 ? 'hello' : 'world' // "hello"
2 < 1 ? 'hello' : 'world' // "world"

console.log(true ? 'T' : 'F');

二、 赋值运算符

运算符描述
=直接赋值操作
+=运行加法之后赋值x += y 等同于x = x + y;
-=运行减法之后赋值
*=运行乘法之后赋值
/=运行除法之后赋值
%=运行取余之后赋值

赋值运算符(Assignment Operators)用于给变量赋值。

最常见的赋值运算符,当然就是等号(=)。

// 将 1 赋值给变量 x
var x = 1;

// 将变量 y 的值赋值给变量 x
var x = y;

赋值运算符还可以与其他运算符结合,形成变体。下面是与算术运算符的结合。

// 等同于 x = x + y
x += y

// 等同于 x = x - y
x -= y

// 等同于 x = x * y
x *= y

// 等同于 x = x / y
x /= y

// 等同于 x = x % y
x %= y

2.1运算符优先级

a) 最基本的运算符优先级就是所谓的“ 先乘除, 后加减”

b) 对于优先顺序处于同一层次上的运算符, 按照从左到右出现的顺序计算

c) typeof 是优先级别最高的运算符之一。

d) 用小括号来提升运算符的优先级

e) 赋值运算的优先级非常低,通常都是最后执行

运算符描述
()用小括号来提升运算符的优先级
…++ 、…–、!、typeof一元运算符-自增、自减、取反、检测数据类型(只对一个数据进行操作)
*、/、%乘法、除法、取余
+、-、+加法、减法、字符串连接
<、<=、>、>=、instanceof小于、小于等于、大于、大于等于、检测数组
、!=、=、!==等于、不等于、严格相等、严格不相等
&&逻辑与
||逻辑或
?:条件运算符
=赋值运算符

总结

以上就是今天带你走进从零认识JavaScript到精髓(四)JavaScript 逻辑运算符
会持续更新中…
原创不易,期待您的点赞关注与转发评论😜😜😜

以上是关于JavaScript到精髓JavaScript 逻辑运算符的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript语言精髓之语法概要拾遗(转)

《JavaScript 语言精髓》读书笔记

JavaScript中的this陷阱的最全收集

JavaScript中逻辑运算符

Javascript模块化编程

JavaScript基础