视频加载失败

JavaScript表达式与操作符

1939 字
10 分钟
JavaScript表达式与操作符

什么是表达式和运算符#

  • 例如:5 + 3就是一个表达式,5和3是操作数,+是运算符;
  • 表达式种类有:算术、关系、逻辑、赋值和综合表达式

算术表达式#

算术运算符

意义运算符
加+
减-
乘*
除/
取余%

加减乘除加减的符号和数学一致,乘法是*号,除法是/号 默认情况,乘除法的优先级要高于加法和减法;必要时 可以使用圆括号来改变运算的顺序

加号的两种作用

  • 加号有“加法”和“连字符”两种作用

  • 如果加号两边的操作数都是数字,则为“加法”,否则 为连字符

    1 + 2 // 3
    1 + '2'; // '12'
    '1' + '2'; // '12'

取余运算

  • 取余运算也叫作“求模运算”,用百分号“%”表示

  • a % b表示求a除以b的余数,它不关心整数部分,只关 心余数

    11 % 4; //3,因为11除以4余数是3
    20 % 6; //2,因为20除以6余数是2
    12 % 3; //0,因为能够整除,余数是0
    9 % 3; //0,因为能够整除,余数是0
    3 % 9; //3,因为商0,余数是3

隐式类型转换

  • 如果参与数学运算的某操作数不是数字型,那么JavaScript 会自动将此操作数转换为数字型

    3 * '4' //12
  • 隐式转换的本质是内部调用Number()函数

    true + true //2
    false + 2 //2
    3 * '2天' //NaN

有关IEEE754

  • 在JavaScript中,有些小数的数学运算不是很精准

    0.1 + 0.2 // 0.30000000000000004
  • JavaScript使用了IEEE754二进制浮点数算术标准,这会使 一些个别的小数运算产生“丢失精度”问题

  • 解决办法:在进行小数运算时,要调用数字的toFixed()方法 保留指定的小数位数

幂和开根号

  • JavaScript中没有提供幂计算、开根号的运算符。需要使用 Math对象的相关方法进行计算。

    Math.pow(2, 3) // 8
    Math.pow(3, 2) // 9
    Math.sqrt(81) // 9
    Math.sqrt(-81) // NaN

向上取整和向下取整

  • Math.ceil() 向上取整; Math.floor()向下取整

    Math.ceil(2.4) // 3
    Math.floor(2.4) // 2
    Math.ceil(-2.4) // -2
    Math.floor(-2.4) // -3
    Math.ceil(2) // 2
    Math.floor(2) // 2

关系表达式#

关系运算符

意义运算符
大于>
小于<
大于或等于>=
小于或等于<=
等于==
不等于!=
全等于===
不全等于!==

大于和小于

  • 大于>、小于<两个符号和数学相同

  • “大于等于”运算符是>= ,“小于等于”运算符是<=

    8 > 5 // true
    7 < 4 // false
    8 >= 7 // true
    8 >= 8 // true
    8 <= 8 // true
    8 <= 11 // true

判断是否相等

  • 如果想比较两个值是否相等,此时应该使用==运算符

  • JavaScript中等号=表示赋值,而并不是相等。判断相等应 该使用==运算符

    3 == 3 // true
    3 === 3 // true
    3 = 3 // 错误语句

相等和全等

  • 两个等号==运算符不比较值的类型,它会进行隐式转换后 比较值是否相等

  • 三个等号===运算符,不仅比较值是否相同,也比较类型 是否相同

    5 == '5'; // true
    5 === '5'; // false

    示例:

    1 == true // true
    1 === true // false
    0 == false // true
    0 === false // false
    0 == undefined // false
    0 === undefined // false
    undefined == null // true
    undefined === null // false

NaN不自等

  • NaN作为一个特殊的数字类型值,它在用==比较的时候也 有特殊的结果

    NaN == NaN // false
    NaN === NaN // false

如何判断某变量值为NaN

  • isNaN()函数可以用来判断变量值是否为NaN

    isNaN(NaN) // true
    isNaN(5) // false
  • 但isNaN()也不好用,它的机理是:只要该变量传入 Number()的执行结果是NaN,则isNaN()函数都会得到true

    isNaN(undefined) // true
    isNaN('3天') // true
    isNaN(null) // false

特殊值的相等关系

null == undefined // true
null == 0 // false
NaN == NaN // false

不相等和不全等

  • !=表示不相等,!==表示不全等

    5 != 6 // true
    5 !== 6 // true
    5 !=
    '5' // false
    5 !== '5' // true

JS中没有连比

  • 判断变量a是不是介于3到15之间,应该怎么写呢?

    错误示范:

    3 <= a <= 15

    正确示范:使用逻辑运算符

    3 <= a && a<= 15

    a 大于等于3 ,并且a小于等于15

逻辑表达式#

逻辑运算符:

意义运算符
非!
与&&
或||

非运算

  • !表示“非”,也可以称为“置反运算”

  • !是一个“单目运算符”,只需要一个操作数

  • 置反运算的结果一定是布尔值

    !true // false
    !false // true
    !!true // true
    !0 // true
    !undefined // true
    !'' // true
    !'imooc' // false
    !!0 // false
    !!'' // false
    !!'imooc' // true

与运算

  • &&表示“并且”,称为“与运算”,口诀:都真才真

    true && true // true
    true && false // false
    false && true // false
    false && false // false

或运算

  • ||表示“或者”,称为“或运算”,口诀:有真就真

    true || true //true
    true || false //true
    false || true //true
    false || false //false

短路计算

思考以下计算会得出什么?

3 && 6

3为真,6也为真,&&表示“并且”,称为“与运算”,口诀:都真才真,起到最终决定的是后面的6,所以最终输出6

  • a && b运算中:a真,表达式值为b;a假,表达式值为a

再来看看以下例子:

3 && 6 // 6
undefined && 15 // undefined
15 && undefined // undefined
null && 2 // null
'' && 16 // ''
NaN && undefined // NaN

那如果换成以下会什么结果

3 || 6

3为真,不用看后面的6,最终输出3,||表示“或者”,称为“或运算”,口诀:有真就真

再来看看以下例子:

3 || 6 // 3
0 || 6 // 6
null || undefined // undefined
'a' || 'b' // 'a'
NaN || null // null
  • 不需要背诵和记忆规律,遇见题目只需要“现场分析”即 可

逻辑运算顺序

  • 逻辑运算的优先级是:非 → 与 → 或

    !true || true // true
    3 && 4 || 5 && 6 // 4

赋值表达式#

赋值运算符

意义运算符
赋值=
快捷赋值%=、/=、*=、-=、+=
自增运算++
自减运算--
  • JS中,=表示赋值,==判断是否相等(不判断类型),===判 断是否全等
  • 赋值运算符会将等号右边的数值,赋予等号左边的变量

赋值运算也产生值

  • 赋值运算也产生值,等号后面的值将作为“赋值运算的值”

    var a;
    console.log(a = 4); // 4
  • 这就意味着,可以连续使用赋值运算符

    var a, b, c;
    a = b = c = 15;
    console.log(a); // 15
    console.log(b); // 15
    console.log(c); // 15

快捷赋值

  • 快捷赋值运算符表示在原数值基础上进一步进行运算

    var a = 3;
    a += 5; // 等价于a = a + 5
    console.log(a); // 8
    var b = 14;
    b /= 2; // 等价于b = b / 2
    console.log(b); // 7
    var c = 16;
    c %= 3; // 等价于c = c % 3
    console.log(c); // 1

自增/自减运算符

  • ++和—是自增/自减运算符,表示在自身基础上加1或减1

    var a = 3;
    a++;
    console.log(a); // 4

a++和++a的区别

  • a++ 先用再加; ++a 先加再用

    var a = 3;
    var b = a++;
    console.log(b); // 3
    console.log(a); // 4
    var a = 3;
    var b = ++a;
    console.log(b); // 4
    console.log(a); // 4

综合表达式#

运算顺序: 非运算 → 数学运算 → 关系运算 → 逻辑运算

5 < 3 + 3 // true
3 > 2 && 8 > 3 + 4 // true
3 > 2 && 8 > 3 + 5 // false
!13 < 5 - 3 // true
!13 < 5 - 5 // false

变量的范围表示

5 <= a <= 12//❌
a >= 5 && a <= 12//✔

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

JavaScript表达式与操作符
https://f.youzi177.cn/posts/2026101805javascript-biao-da-shi-yu-cao-zuo-fu/
作者
小封鸭
发布于
2026-10-18
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
小封鸭
小楼一夜听春雨,深巷明朝卖杏花
公告
欢迎来到我的博客。这里主要记录前端全栈和日常内容
分类
标签
最新动态
站点统计
文章
60
分类
3
标签
12
总字数
107,734
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录