Post

JavaScript一元操作符

在讲操作符之前讲下js中的表达式。

js代码就是由操作符和表达式组成的。

比方说如下代码

1
1+1

1是表达式, + 就是操作符。 表达式可以分为六种类型

  1. 原始表达式
    • 常量 比方说在js中,自定义的常量,会用大写字母或者大写字母加上下划线
    • 变量
    • 直接量 比方说我们平常看的字符串,数字
    • 关键字
  2. 初始化表达式
  3. 函数
  4. 函数调用表达式,就是把函数运用起来的表达式
  5. 属性访问表达式,就是访问对象属性的两种方法 . 和 【】
  6. 对象创建表达式, var a = new Object()

定义: 只能操作一个值的操作符叫做一元菜操作符。

  1. 一元+和-操作符 1.1 一元+操作符
    • boolean操作 true返回1 false返回0
    • null操作 返回0
    • Undefined 返回NaN
    • 字符串,如果是纯数字,返回对应的数字,如果是混合的,返回NaN
    • object,会先调用velueOf()和(或者)toString()方法 1.2 一元减操作符 一元减操作符应用于数值时,该值会变成负数。而当应用于非数值时,一元减操作符遵循与一元加操作符相同的规则,最后再将得到的数值转换为负数

/assets/img/8.png /assets/img/8.png

ps:js中正0 和负0是完全相等的

  1. 递增和递减操作符
    • 如果写在表达式前面,j s会先进行加一或者减一的操作,再进行运算;写在后面相反

面试的时候会碰到这么一道题 a=1 b= a+++a a,b的值最后是多少? 运算过程

  • 先去计算b
  • 计算a++,得到c
  • 然后去计算c+a 如果是b=a++ + ++a

优先级

  • 先算乘除,再算加减 js中15个等级的优先级
  • 优先级最高的是属性访问 .和【】
  • 接下来是一元操作符
  • 数学中的乘除,加减
  • 比较运算符
  • 相等,一共4个 == / ===/!=/!===
  • &
  •  
  • 三目运算
  • 赋值运算=

看以下代码 a = 3 ++a == 3 // false

如果你不知道一元运算符的优先级高于相等,那么计算过程是这样的

  • A==3 得到true
  • 然后true先转化为1, 在进行++1
  • 得到的结果是2

结合性 什么是结合性呢?比方说乘法和除法同时存在的时候,是先计算乘法还是除法呢?也就是运算符等级相同的情况下,先计算哪个?

  1. 左结合
  2. 右结合
    • js中,所有的一元操作符,都是右结合,也就是先计算右边的值
    • 除了这个,js中还有另外两个运算符是右结合,三目运算,赋值运算
    • 其他的都是左结合 看下面的代码, 正确结果是什么类型的 ?

!a++ //布尔类型,一元操作符中,从右向左计算

X = a?b:c?d:e?f:g // 三目运算,从右向左计算

A=b=c=d // 赋值操作, 从右向左计算

运算顺序 如果js中存在表达式,表达式中还存在子表达式,那么js中是从左到右运行

  • 一元操作符对任何类型都有效
  • 当你把一个数字进行递减操作的时候,得到的结果可能跟预期不一样

/assets/img/8.png

  • 所以如果你想对一个小数进行递减,先把它转化为整数,再操作

布尔操作符

  1. 逻辑非 !
  2. 逻辑与 &&
  3. 逻辑或 

以下一元操作符不是符号,字符形式

  1. typeof 操作符,不是一个函数,只是一个操作符
  2. void 一般用于禁止跳转
  3. delete
This post is licensed under CC BY 4.0 by the author.