JavaScript运算符及优先级

news/2024/10/23 19:13:37/

JavaScript 提供了多种运算符来处理不同类型的操作,包括算术运算、赋值、比较、逻辑运算等。运算符的优先级决定了在没有括号的情况下,哪个运算符会先被计算。

算术运算符

  1. 加法 (+)
  2. 减法 (-)
  3. 乘法 (*)
  4. 除法 (/)
  5. 取余 (%)
  6. 指数 (**)

示例:

javascript">let result = 2 + 3 * 4; // 14, 因为乘法优先于加法

赋值运算符

  1. 简单赋值 (=)
  2. 加法赋值 (+=)
  3. 减法赋值 (-=)
  4. 乘法赋值 (*=)
  5. 除法赋值 (/=)
  6. 取余赋值 (%=)

示例:

javascript">let a = 5;
a += 3; // 等同于 a = a + 3, a 现在是 8

比较运算符

  1. 等于 (==)
  2. 不等于 (!=)
  3. 严格等于 (===)
  4. 严格不等于 (!==)
  5. 大于 (>)
  6. 小于 (<)
  7. 大于等于 (>=)
  8. 小于等于 (<=)

示例:

javascript">let a = 5;
let b = '5';
console.log(a == b); // true, 类型转换后相等
console.log(a === b); // false, 类型不同

逻辑运算符

  1. 逻辑与 (&&)
  2. 逻辑或 (||)
  3. 逻辑非 (!)

示例:

javascript">let a = true;
let b = false;
console.log(a && b); // false
console.log(a || b); // true
console.log(!a); // false

位运算符

  1. 按位与 (&)
  2. 按位或 (|)
  3. 按位异或 (^)
  4. 按位非 (~)
  5. 左移 (<<)
  6. 有符号右移 (>>)
  7. 无符号右移 (>>>)

示例:

javascript">let a = 5; // 二进制: 0101
let b = 3; // 二进制: 0011
console.log(a & b); // 1 (0001)

其他运算符

  1. 条件运算符 (?:)
  2. 类型运算符 (typeof, instanceof, in, delete)
  3. 逗号运算符 (,)

示例:

javascript">let isEven = (num) => num % 2 === 0 ? 'Even' : 'Odd';
console.log(isEven(4)); // Even

运算符优先级

运算符优先级决定了在没有括号的情况下,哪些运算会先被计算。以下是一些常见的运算符优先级,从高到低排列:

  1. 成员访问 (.)、数组下标 ([])、函数调用 (())、new
  2. 后置递增/递减 (x++, x--)
  3. 逻辑非 (!)、按位非 (~)、一元加号 (+x)、一元减号 (-x)、递增 (++x)、递减 (--x)、typeofvoiddelete
  4. 乘法 (*)、除法 (/)、取余 (%)
  5. 加法 (+)、减法 (-)
  6. 位移运算符 (<<, >>, >>>)
  7. 比较运算符 (<, <=, >, >=, in, instanceof, ==, !=, ===, !==)
  8. 按位与 (&)
  9. 按位异或 (^)
  10. 按位或 (|)
  11. 逻辑与 (&&)
  12. 逻辑或 (||)
  13. 条件运算符 (?:)
  14. 赋值运算符 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=)
  15. 逗号运算符 (,)

示例:

javascript">let result = 1 + 2 * 3 - 4 / 2; // 7, 因为乘法 (2 * 3) 和除法 (4 / 2) 优先于加法和减法

http://www.ppmy.cn/news/1541424.html

相关文章

React是如何工作的?

从编写组件到最后屏幕生成界面&#xff0c;如上图所示&#xff0c;我们现在需要知道的就是后面几步是如何运行的。 概述 这张图解释了 React 渲染过程的几个阶段&#xff1a; 渲染触发&#xff1a;通过更新某处的状态来触发渲染。渲染阶段&#xff1a;React 调用组件函数&…

Java项目-基于springboot框架的校园疫情防控系统系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

删除node_modules文件夹

前言 当安装了较多模块后&#xff0c;node_modules目录下的文件会很多&#xff0c;直接删除整个目录会很慢&#xff0c;下面介绍些快速删除node_modules目录的方法。 方法一&#xff1a;使用rimraf模块的命令 在全局安装rimraf模块&#xff0c;然后通过其命令来快速删除node…

Python爬取京东商品信息,详细讲解,手把手教学(附源码)

Python 爬虫爬取京东商品信息 下面我将逐一解释每一部分的代码 导入库 from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.edge.options import Options import time import random import csv from selenium.c…

论文阅读-三维结构几何修复(导-4)

摘要 解决了3D数字模型中大洞修复的问题。 通过基于字典学习的方法解决了缺失区域推断问题&#xff0c;该方法利用从单个自相似结构和在线深度数据库中得出的几何先验。利用几何先验提供的线索&#xff0c;从洞的边界周围自适应地传播局部3D表面平滑性来恢复底层表面。在合成…

Yocto构建i.MX处理器目标镜像

1. 初始化构建环境 首先&#xff0c;通过运行imx-setup-release.sh脚本来初始化Yocto构建环境。此脚本的标准语法如下&#xff1a; $ DISTRO<distro name> MACHINE<machine name> source imx-setup-release.sh -b <build dir>DISTRO<distro configurati…

CSMA/CD协议 监听算法

IEEE802.3规定的CSMA/CD协议可以利用多种监听算法来减少发送冲突的概率,下面关于各种监听算法的描述中,正确的是() A.非坚持型监听算法有利于减少网络空闲的时间 B.坚持型监听算法有利于减少冲突的概率 C.P坚持型监听算法无法减少网络的空闲时间 D.坚持型监听算法能够及时抢…

【雷电模拟器命令合集操作大全】官方文档整理贴

此贴是官方的帮助整理文档在这里插入代码片 一起来看看几个主要命令&#xff0c;大部分命令读者可以自己试试~ 1、launch 支持2种启动雷电模拟器的方式 –name顾名思义&#xff0c;应该是模拟器的标题栏的名字&#xff0c;本人经过验证果然如此! –index mnq_idx&#xff0c;模…