当前位置: 首页 > news >正文

JavaScript运算符

在JavaScript开发中,运算符是编程的基础工具。它们用于执行各种操作,从简单的数学计算到复杂的逻辑判断。本文将深入探讨JavaScript中的各种运算符,包括算术运算符、比较运算符、布尔运算符、位运算符以及其他一些特殊运算符。

一、算术运算符

JavaScript提供了多种算术运算符,用于执行基本的数学运算。这些运算符包括:

  • 加法运算符x + y
  • 减法运算符x - y
  • 乘法运算符x * y
  • 除法运算符x / y
  • 指数运算符x ** y
  • 余数运算符x % y
  • 自增运算符++xx++
  • 自减运算符--xx--
  • 数值运算符+x
  • 负数值运算符-x

(一)加法运算符

加法运算符(+)是最常见的运算符,用于求两个数值的和。它还可以用于字符串的连接。

1 + 1 // 2
'a' + 'b' // "ab"
1 + 'a' // "1a"

如果一个运算子是字符串,另一个运算子是非字符串,非字符串会转成字符串,再进行连接。

(二)余数运算符

余数运算符(%)返回前一个运算子被后一个运算子除所得的余数。需要注意的是,运算结果的正负号由第一个运算子的正负号决定。

12 % 5 // 2
-1 % 2 // -1

(三)自增和自减运算符

自增和自减运算符会修改原始变量的值。它们可以放在变量之前或之后,这会影响运算的顺序。

var x = 1;
++x // 2
x++ // 2

(四)数值运算符和负数值运算符

数值运算符(+)和负数值运算符(-)可以将任何值转为数值。

+true // 1
+[] // 0
+{} // NaN

二、比较运算符

比较运算符用于比较两个值的大小,返回一个布尔值。JavaScript提供了以下比较运算符:

  • > 大于
  • < 小于
  • <= 小于或等于
  • >= 大于或等于
  • == 相等
  • === 严格相等
  • != 不相等
  • !== 严格不相等

(一)严格相等运算符

严格相等运算符(===)比较两个值是否为“同一个值”。如果两个值不是同一类型,直接返回false

1 === '1' // false

(二)相等运算符

相等运算符(==)比较两个值是否相等,会进行类型转换。

1 == '1' // true

(三)比较字符串

字符串按照字典顺序进行比较。

'cat' > 'dog' // false

三、布尔运算符

布尔运算符用于将表达式转为布尔值。主要的布尔运算符包括:

  • 取反运算符!
  • 且运算符&&
  • 或运算符||
  • 三元条件运算符?:

(一)取反运算符

取反运算符(!)用于将布尔值变为相反值。

!true // false
!false // true

(二)且运算符

且运算符(&&)用于多个表达式的求值。如果第一个运算子的布尔值为true,则返回第二个运算子的值;否则返回第一个运算子的值。

't' && 'f' // "f"
'' && 'f' // ""

(三)或运算符

或运算符(||)用于多个表达式的求值。如果第一个运算子的布尔值为true,则返回第一个运算子的值;否则返回第二个运算子的值。

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

(四)三元条件运算符

三元条件运算符(?:)用于根据条件返回不同的值。

't' ? 'hello' : 'world' // "hello"
0 ? 'hello' : 'world' // "world"

四、位运算符

位运算符用于对数字的二进制表示进行操作。主要的位运算符包括:

  • 按位非~
  • 按位与&
  • 按位或|
  • 按位异或^
  • 按位移位<<>>

(一)按位非

按位非运算符(~)会将数字转为32位二进制整数,然后反转每一位。

~5 // -6

(二)按位与

按位与运算符(&)对两个数的每一位执行按位与运算。

12 & 10 // 8

(三)按位或

按位或运算符(|)对两个数的每一位执行按位或运算。

12 | 10 // 14

(四)按位异或

按位异或运算符(^)对两个数的每一位执行按位异或运算。

12 ^ 10 // 6

(五)按位移位

按位移位运算符(<<>>)用于将数字的二进制表示向左或向右移动指定的位数。

2 << 2 // 8
16 >> 1 // 8

五、其他运算符

(一)void 运算符

void 运算符用于执行一个表达式,然后返回undefined

void 0 // undefined

(二)逗号运算符

逗号运算符用于对两个表达式求值,并返回后一个表达式的值。

'a', 'b' // "b"

六、真题解答

下面代码中,a 在什么情况下会执行输出语句打印 1

var a = ?;
if(a == 1 && a == 2 && a == 3){console.log(1);
}

参考答案

方法一:利用 toString() 方法

var a = {i: 1,toString() {return a.i++;}
}
if (a == 1 && a == 2 && a == 3) {console.log('1');
}

方法二:利用 valueOf() 方法

var a = {i: 1,valueOf() {return a.i++}
}
if (a == 1 && a == 2 && a == 3) {console.log('1');
}
http://www.xdnf.cn/news/506575.html

相关文章:

  • 人工智能-自然语言与语音产品实现
  • SpringBoot--自动配置原理详解
  • 2025.05.17淘天机考笔试真题第二题
  • vue使用axios实现拦截器
  • 体育比分数据服务避坑指南
  • 信息与信息化
  • 【高斯函数拟合】高斯-牛顿法与梯度下降法的 Python 实现
  • Python集合运算:从基础到进阶全解析
  • 无线信道的噪声与干扰
  • 长三角、珠三角、成渝、京津冀四大城市群的区域与分布
  • 生产者 - 消费者模式实现方法整理
  • Ubuntu 添加系统调用
  • 给你的matplotlib images添加scale Bar
  • Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程
  • 学习深度学习是否要先学习机器学习?
  • C语言| 指针变量的定义
  • 现货黄金跌破 3160 美元,市场行情剧烈波动​
  • 数据库故障排查指南:从紧急响应到根因分析【DeepSeek创作】
  • AUTOSAR图解==>AUTOSAR_SRS_WatchdogDriver
  • 基于单片机的防盗报警器设计与实现
  • 专题四:综合练习(括号组合算法深度解析)
  • 一分钟用 MCP 上线一个 贪吃蛇 小游戏(CodeBuddy版)
  • ARM-Linux 完全入门
  • Word文档图片排版与批量处理工具推荐
  • 在 Linux 上安装 MATLAB:完整指南与疑难解决方案
  • Autosar Nvm下电存储实现方式-基于ETAS工具
  • 小demo:选中树结构最后层级拿到所有层级中的deviceName并按照要求拼接
  • 嵌入式培训之数据结构学习(五)栈与队列
  • C语言:gcc 如何调用 Win32 打开文件对话框 ?
  • 543.二叉树的直径