返回博客

JavaScript 令人迷惑的语法特性

本文介绍 JavaScript 中一些不常见且容易混淆的语法特性,例如使用 `+` 和 `-` 进行类型转换,`~` 运算符的用法,简化条件表达式,`&&` 和 `||` 操作符的特性,以及容易混淆的真假值情况和数组空判断方法。

Mt.r
|

JS 的一些奇怪的语法

https://blog.csdn.net/qq_66233357/article/details/130798717

类型转换使用 +-

  • + 将字符串转换为数字。例如:+"42" 结果是 42
  • - 转换并翻转符号位。例如:-"42" 结果是 -42

~ 操作符

  • ~ 是按位非运算符,~x 相当于 -(x+1)
  • ~~ 用于去除小数部分,相当于 parseInt
  • !~ 常用于 indexOf 检查,!~indexOf 等同于 indexOf === -1

简化条件表达式

  • b = a ? true : false; 可以简化为 b = !!a;

&&|| 操作符

  • 它们返回操作数的一个值,而非布尔值。
  • a && foo(); 表示如果 a 为真,则执行 foo()
  • a == 2 && a == 3; 结果为 false,不会报错。

恒假值和恒真值

  • 使用字符串与布尔值比较创造恒假或恒真值不推荐,如 "42" == true

“假阳”(Falsy Truthy)情况

  • false == 0, false == "", false == []:因为隐式类型转换。
  • "0" == false, "" == 0, [] == 0, [] == ![]:也是类型转换的结果。

检查数组是否为空

  • 使用 data.length == 0 来检查数组是否为空,比 [] == ![] 更直观可靠。