2.02.16运算符补充

隐式转换

  • 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算。这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换

隐式转换规则

1.字符串连接符(+)

  • 只要遇到字符串就会变成字符串拼接
    • i = “a”+1+ 2; 结果为:a12
    • i = 1+2+“a”; 结果为:3a
    • var arr = [“俄罗斯”,“乌克兰”,“三个方向”,“高达”];
      console.log("arr => " + arr); //arr => 俄罗斯,乌克兰,三个方向,高达

2.数值运算符 (正号+ 负号-)

  • *在字符串前加+或-可以使得其变为number类型,只是值为NaN
    • var i = +“123”;console.log(i, typeof i); //控制台输出为:NaN ‘number’

3.算术运算符 ( + - * / % )

  • **隐式转换:**除了+外,其他有隐式的数据类型转换的作用,把其他类型转成number类型

4.比较运算符

1.("> < >= <=")的隐式转化
  1. 数字与非数字比较,会把非数字转化成数字
    • 比如,
      console.log(1 >true);//1和1的比较
      console.1og(1 >false);//1和0的比较
      console.1og(1 >“aa”);//1和NaN的比较,NaN无法比较大小,这里会打印false
  2. 字符串与字符串比较
    • 比较他们的unicode编码
    • js使用的编码: unicode编码(统一码,万国码)
      大写字母: A-Z,65-90
      小写字母:a-Z,97-122
      简体中文的范围:\u4e00 - \u9fa5
      “字符”. charcodeAt() 可以查看字符的unicode编码
    • 两个字符串的比较是单个单个字符比较编码大小,直至出结果
  3. 除了两个字符串比较,其他情况都转成number类型比较
2.("== !=")的隐式转化
  1. 如果两个操作数都是对象,则仅当两个操作数都引用同一个对象时才返回true。就是他们指向的地址一样时才相等。
  2. 如果一个操作数是null,另一个操作数是undefined或者null,则返回true。
  3. 如果两个操作数是不同类型的,就会尝试在比较之前将它们转换为相同类型:
    • 当数字与字符串进行比较时,会尝试将字符串转换为数字值。
    • 如果操作数之一是Boolean,则将布尔操作数转换为1或0。
      • 如果是true,则转换为1。
      • 如果是 false,则转换为0。
    • 如果操作数之一是对象,另一个是数字或字符串,会尝试使用对象的valueOf()和toString()方法将对象转换为原始值。
  4. 如果操作数具有相同的类型,则将它们进行如下比较:
    • String:true仅当两个操作数具有相同顺序的相同字符时才返回。
    • Number:true仅当两个操作数具有相同的值时才返回。+0并被-0视为相同的值。如果任一操作数为NaN,则返回false。
    • Boolean:true仅当操作数为两个true或两个false时才返回true。

5.条件表达式:(! || && 三目运算符)

  • 介绍:在JavaScript中用于条件表达式中时被视为true或false。要记住哪些值是真值, 哪些值是假值,只需记住5个假值:undefined、 null、0、"" 和NaN,其他的值都是真值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值