JavaScript一元操作符
在讲操作符之前讲下js中的表达式。
js代码就是由操作符和表达式组成的。
比方说如下代码
1
1+1
1是表达式, + 就是操作符。 表达式可以分为六种类型
- 原始表达式
- 常量 比方说在js中,自定义的常量,会用大写字母或者大写字母加上下划线
- 变量
- 直接量 比方说我们平常看的字符串,数字
- 关键字
- 初始化表达式
- 函数
- 函数调用表达式,就是把函数运用起来的表达式
- 属性访问表达式,就是访问对象属性的两种方法 . 和 【】
- 对象创建表达式, var a = new Object()
定义: 只能操作一个值的操作符叫做一元菜操作符。
- 一元+和-操作符 1.1 一元+操作符
- boolean操作 true返回1 false返回0
- null操作 返回0
- Undefined 返回NaN
- 字符串,如果是纯数字,返回对应的数字,如果是混合的,返回NaN
- object,会先调用velueOf()和(或者)toString()方法 1.2 一元减操作符 一元减操作符应用于数值时,该值会变成负数。而当应用于非数值时,一元减操作符遵循与一元加操作符相同的规则,最后再将得到的数值转换为负数
ps:js中正0 和负0是完全相等的
- 递增和递减操作符
- 如果写在表达式前面,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
结合性 什么是结合性呢?比方说乘法和除法同时存在的时候,是先计算乘法还是除法呢?也就是运算符等级相同的情况下,先计算哪个?
- 左结合
- 右结合
- js中,所有的一元操作符,都是右结合,也就是先计算右边的值
- 除了这个,js中还有另外两个运算符是右结合,三目运算,赋值运算
- 其他的都是左结合 看下面的代码, 正确结果是什么类型的 ?
!a++ //布尔类型,一元操作符中,从右向左计算
X = a?b:c?d:e?f:g // 三目运算,从右向左计算
A=b=c=d // 赋值操作, 从右向左计算
运算顺序 如果js中存在表达式,表达式中还存在子表达式,那么js中是从左到右运行
- 一元操作符对任何类型都有效
- 当你把一个数字进行递减操作的时候,得到的结果可能跟预期不一样
- 所以如果你想对一个小数进行递减,先把它转化为整数,再操作
布尔操作符
- 逻辑非 !
- 逻辑与 &&
逻辑或
以下一元操作符不是符号,字符形式
- typeof 操作符,不是一个函数,只是一个操作符
- void 一般用于禁止跳转
- delete
This post is licensed under CC BY 4.0 by the author.