JavaScript 运算符主要包括:
· 算术运算符
· 赋值运算符
· 比较运算符
· 三元运算符
· 逻辑运算符
· 字符串连接运算符
(1)算术运算符
运算符 | 描述 | 实例 | 运行结果 |
---|---|---|---|
+ | 加 | y = 2+1 | 3 |
- | 减 | y = 2-1 | 1 |
* | 乘 | y = 2*1 | 2 |
/ | 除,返回结果为浮点类型 | y = 2/1 | 2 |
% | 求余,返回结果为浮点类型;要求两个操作数均为整数 | y = 6%4 | 2 |
++ | 递加,分为前加和后加,对布尔值和 null 将无效 | y=2; y++; ++y | |
-- | 递减,与递加同理 | y=2; y--; --y |
对于前加和后加,执行后的结果都是变量加1,其区别在于执行时返回结果不一样,递减同理。参考下面两个例子:
var a=3;
console.log(a--); //3
console.log(a); //2
console.log(a--); //2
运算符中的 “+” 号,既可以作为算术的加法,也可以作为字符串的连接符:
// 加法
1 + 1 // 2
true + true // 2
1 + true // 2
// 字符串连接
'1' + '1' // "11"
'1.1' + '1.1' // "1.11.1"
1、如果运算子是对象,先自动转成原始类型的值(即先执行该对象的valueOf方法,如果结果还不是原始类型的值,再执行toString方法;如果对象是Date实例,则先执行toString方法)。
2、两个运算子都是原始类型的值以后,只要有一个运算子是字符串,则两个运算子都转为字符串,执行字符串连接运算。
3、否则,两个运算子都转为数值,执行加法运算。
'1' + {foo: 'bar'} // "1[object Object]"
'1' + 1 // "11"
'1' + true // "1true"
'1' + [1] // "11"
上面的例子中,左侧为字符串,则整个算术式为字符串相加;
这种由于参数不同,而改变自身行为的现象,叫做“重载”(overload)。
'3' + 4 + 5 // "345"
3 + 4 + '5' // "75"
由于字符串所在的位置不同,则执行结果不同。
加法运算符会将其他类型的值,自动转为字符串,然后再执行连接运算。
1 - '2' // -1
1 * '2' // 2
1 / '2' // 0.5
加法运算符以外的其他算术运算符(比如减法、除法和乘法),都不会发生重载。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算。
(2)赋值运算符
赋值表达式(=) -----> 不具有比较作用
严格相等运算符(===)
相等运算符(==)
看一个例子:
var x = 1;
var y = 2;
if (x = y) { //x==y
console.log(x);
}
原意是当x等于y的时候,才执行相关语句。但是,这里将“严格相等运算符”写成“赋值表达式”,结果变成了将y赋值给x,然后条件就变成了,变量x的值(等于2)自动转为布尔值以后,判断其是否为true。
网友评论