前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 数据类型与运算符(下)

JavaScript 数据类型与运算符(下)

作者头像
RiemannHypothesis
发布2022-10-05 08:07:20
4400
发布2022-10-05 08:07:20
举报
文章被收录于专栏:Elixir

JavaScript 运算符之赋值运算符

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

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

代码语言:javascript
复制
// 将 1 赋值给变量 x
var x = 1;

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

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

代码语言:javascript
复制
// 等同于 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

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

JavaScript 运算符之比较运算符

比较运算符用于比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件。

代码语言:javascript
复制
2 > 1 // true

JavaScript 一共提供了8个比较运算符。

< 小于运算符 ">" 大于运算符 <= 小于或等于运算符 ">=" 大于或等于运算符 == 相等运算符 === 严格相等运算符 != 不相等运算符 !== 严格不相等运算符\

这八个比较运算符分成两类:相等比较和非相等比较。两者的规则是不一样的,对于非相等的比较,算法是先看两个运算子是否都是字符串,如果是的,就按照字典顺序比较(实际上是比较 Unicode 码点);否则,将两个运算子都转成数值,再比较数值的大小。

JavaScript 运算符之比布尔运算符

布尔运算符用于将表达式转为布尔值,一共包含四个运算符。

取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。

代码语言:javascript
复制
!true // false
!false // true

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

TIP

undefined null false 0 NaN 空字符串('')\

代码语言:javascript
复制
!undefined // true
!null // true
!0 // true
!NaN // true
!"" // true

!54 // false
!'hello' // false
![] // false
!{} // false

JavaScript 运算符之位运算符

左移运算符(left shift):符号为<< 右移运算符(right shift):符号为>>\

这些位运算符直接处理每一个比特位(bit),所以是非常底层的运算,好处是速度极快,缺点是很不直观,许多场合不能使用它们,否则会使代码难以理解和查错。

快速计算位移方案

  1. 左移运算符就是*2的n次方(n代表位移次数)
  2. 右移运算符就是/2的n次方 (n代表位移次数,不同的时候,出现小数时要取整)

位运算演算过程

在移位运算过程中,符号位始终保持不变 如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃\

左移运算符 <<
代码语言:javascript
复制
console.log(5 << 2); // 20
右移运算符 >>
代码语言:javascript
复制
console.log(1000 >> 8); //3

十进制转为二进制

采用"除2取余,逆序排列"法:

假设我们现在需要将42转为二进制,那我们怎么做呢,如下图所示:

JavaScript 运算符优先级

JavaScript 各种运算符的优先级别(Operator Precedence)是不一样的。优先级高的运算符先执行,优先级低的运算符后执行。

代码语言:javascript
复制
4 + (5 * 6) // 34

下述表格优先级由高到低

运算符

描述

. [] ()

字段访问、数组下标、函数调用以及表达式分组

++ -- - ~ ! delete new typeof void

一元运算符、返回数据类型、对象创建、未定义值

/ * %

乘法、除法、取模

+ - +

加法、减法、字符串连接

<< >> >>>

移位

< <= > >= instanceof

小于、小于等于、大于、大于等于、instanceof

== != === !==

等于、不等于、严格相等、非严格相等

&&

逻辑与

?:

三元运算符

如果多个运算符混写在一起,常常会导致令人困惑的代码,所以一般我们可以通过多条语句完成,记住所有运算符的优先级,是非常难的,也是没有必要的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaScript 运算符之赋值运算符
  • JavaScript 运算符之比较运算符
  • JavaScript 运算符之比布尔运算符
  • JavaScript 运算符之位运算符
    • 快速计算位移方案
      • 位运算演算过程
        • 左移运算符 <<
        • 右移运算符 >>
      • 十进制转为二进制
      • JavaScript 运算符优先级
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档