注册 登录

清河洛

javascript中的运算符

qingheluo2016-12-16清河洛468
算术运算符+ 加 - 减 * 乘 / 除 % 求模 ++ 自增 -- 自减 ** 幂运算(从右向左计算)特殊情况:Infinity + Infinity; //Infinity -Infinity + -Infinity; //-Infinity Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN 'your age:' + 10 + 20; //your age:1020,被转换成字符串 10 + 20 + 'is youe age'; //30is youe age,没有被转成字符串 &#...

算术运算符

+ 加    - 减    * 乘    / 除
% 求模  ++ 自增   -- 自减
** 幂运算(从右向左计算)

特殊情况:

Infinity + Infinity; //Infinity
-Infinity + -Infinity; //-Infinity
Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN
'your age:' + 10 + 20; //your age:1020,被转换成字符串
10 + 20 + 'is youe age'; //30is youe age,没有被转成字符串
'您的年龄是:' + (10 + 20); //您的年龄是:30,没有被转成字符串
100 + true; //101,true转成数值为1
100 + ''; //100,''转成了0
100 - null; //100,null转成了0

赋值运算符

=    +=    -=    *=    /=    %=

关系运算符

== 等于    != 不等于
=== 恒等(值和类型)   !== 恒不等
>    <    >=    <=

操作非数值时要遵循一下规则:

1.两个操作数都是数值,则数值比较;
2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较;

特殊值

null == undefined:true
NaN == NaN:false
undefined == 0:false
null == 0:false
'100' == 100:true

逻辑运算符

&& 逻辑与    || 逻辑或    !逻辑非
?.  链判断获取,用于判断一个对象中是否存在某个属性,如果存在返回该属性值,如果不存在返回undefined
    obj?.prop       // 对象属性是否存在
    obj?.[expr]     // 同上
    func?.(...args) // 对象方法是否存在
??  判断null或undefined
    val ?? value
    只有运算符左侧的值为null或undefined时,才会返回右侧的值
    如果 ?? 和多个其他逻辑运算符一起使用,必须用括号表明优先级,否则会报错

&&和||中的短路操作:

逻辑与运算中表现为从前向后寻找false项,一旦找到false项停止向后查找并返回该项的值,如果未找到false项返回最后一项的值

逻辑或运算中表现为从前向后寻找true项,一旦找到true项停止向后查找并返回该项的值,如果未找到true项返回最后一项的值

位运算符

& 位与    | 位或    ~ 取反
^ 异或    << 左移   >> 右移

其他运算符

. 取对象成员    [] 索引取值    ()函数调用
delete 删除变量      new 开辟新的内存空间
typeof 获取数据类型   void 产生undefined
?: 三元运算符
instanceof 类型检测

typeof运算符在检查基本数据类型的时候非常好用,但检测引用类型的时候,我们并不想知道它是不是对象,而是想知道它到底是什么类型的对象

因为数组也是object,null也是Object,这时应该采用instanceof运算符

变量名 instanceof 数据类型名
var box = [1,2,3];
alert(box instanceof Array); //true
当使用instanceof检查基本类型的值时,它会返回false

运算符优先级

在一般的运算中,我们不必考虑运算符的优先级,因为可以通过圆括号来解决这种问题

但如果没有使用圆括号强制优先级,我们必须遵循以下顺序:

. [] ():对象成员存取、数组下标、函数调用等
++ -- ~ ! delete new typeof void:一元运算符
* / % **:乘法、除法、取模、求幂
+ - +:加法、减法、字符串连接
<< >> >>>:移位
< <= > >= instanceof:关系比较、检测类实例
== != === !==:恒等(全等)
&:位与
^:位异或
|:位或
&&:逻辑与
||:逻辑或
?::三元条件
= x=:赋值、运算赋值
,:多重赋值、数组元素


网址导航