js运算符
前言
变量和数据类型,解决数据存放问题[数据的表达]
运算符,解决数据运算的问题[数据的加工]
操作符和操作数
操作符:运算符,参与运算的符号
操作数:参与运算的数据,也称之为"元”
操作符不一定只有一个符号
操作符出现在不同的位置,可能具有不同的含义
常见操作符,如下:
= 表示赋值符号,将右边的数据赋值给左边
. 表示访问符号,用于访问对象的属性
[] 表示访问符号,用于访问对象的属性
() 表示函数调用
按操作数数量区分类
- 一元(目)运算符:() . []
- 二元(目)运算符:+ - + % =
- 三元(目)运算符:?:
功能区分类
- 算术运算符(数学)
- 比较运算符
- 逻辑运算符
- 位运算符
- 其他
js运算符
加号运算符 +
1.加法运算
2.任何数据类型的值 + 字符串 = 都等于字符串
乘、除法运算符 * / 乘方 **
var a = 4 / 2; //2
var b = 0 / 0; //NaN
var c = 1 / 0; //Infinty
var d = -1 / 0; //-Infinty
var e = 2 ** 3;// 8
模尔运算符 %
var a = 9 / 2; //1
数字枚举的位运算
与运算符 &
按二进制,左右两边均为真,整体为真,其余为假
var a = 3 & 1; //1
//即 11 和 01 比对,得到二进制 01
var b = 4 & 1; //0
或运算符 |
有真为真,无真为假
var a = 3 | 1; //3
//即 11 和 01 比对,得到二进制 11
var b = 4 | 1; //5
非运算符 ~
var a = 3 ^ 1; //2
//即 11 和 01 比对,得到二进制 10
var b = 4 ^ 1; //5
异或运算符 ^
var a = 3 ^ 2;// 1
//0011^0010
//结果:0001
加加运算符 ++
++符号,放前面,表示先进行 ++ 运算,再执行js语句
var e = 5;
var f = ++e + 1;
console.log(e);//6
console.log(f);//7
++符号,放后面,表示先执行js语句,再进行 ++ 运算
var e = 5;
var f = e++ + 1;
console.log(e);//6
console.log(f);//6
例题:
let x=1;
Iety=x+x++*(x=x+x++*++x)+x;
console.log(y);//21
逗号运算符 ,
先执行前面的,返回后面表达式
var a = (1 - 1 , 1 + 1 ); 2
js比较运算符
大小比较细节
(1) 两个字符串比较大小,比软的是享符串的字符编码 。
(2) 如果一个不是字符串,并且两个都是原始类型,将它们都转换为数字进行比较
(3) NaN 与 任何数字比较,得到的结果都是false
(4) Infinity 比 任何数字都大
(5) -Infinity 比 任何数字都小
(6)如果其中一个是对象,将对象转换为原始类型,然后按照规则(1)或规则(2)进行比较
大于 >
var bool = 1 > 2;//false
等于 ==
不考虑数据类型,字符串String会隐式类型转换为 Number
var bool = 1 == '1';//true
注意:
1.系统定义 undefined == null
2.对象 == 字符串,对象转为字符串类型再比较
3.对象 == 对象,主要看空间地址
全等于 ===
需要看数据类型,并且值是否相同
var bool = 1 == = '1';//false
注意:NaN ==》 Not a Number 不等于任何东西,包括它自己
undefined,null 不等于任何一个数据类型,但是,undefined == null
undefined == '0';//false
null == 0//false
Object.is 与 === 的区别
object.is 同值相等
=== 零值相等
console.log(NaN === NaN); //false
console.log(Object.is(NaN, NaN)); //true
console.log(+0 === -0); //true
console.log(Object.is(+0, -0)); //false
重写 Object.is
Object.prototype.myIs = function (x, y) {
if (x === y) {
// 针对+0 不等于 -0的情况
return x !== 0 || 1 / x === 1 / y;
}
//针对NaN的情况
return x !== x && y !== y;
};
// ES5
Object.defineProperty(Object, "myIs", {
value:
function(x, y) {
if (x === y) {
// 针对+0 不等于 -0的情况
return x !== 0 || 1 / x === 1 / y;
// 1/+0 Infinity 1/-0 -Infinity
}
// 针对NaN的情况
return x !== x && y !== y;
//NaN !== NaN true
},
configurable: true, // 可配置性,默认为false 能否删除
enumerable: false, // 可枚举性,默认为false
writable: true, // 可重写性,默认为false
});
逻辑运算符
js中 6大假值
false, undefined, null, NaN, 0, ''
逻辑与 &&
全真才为真,有一个假则为假(遇假就停),可用于短路语句
var a = 2 && 2 && 0 + 2 + 3;//5
逻辑或 ||
var a = 0 || 2 || 0 + 2 + 3;//2
逻辑非 !
返回一个布尔值
var a = !1;//false
var b = !!1;//true
js运算符的优先级
括号运算符优先级最高
赋值运算符优先级最弱
&& 的优先级 大于 || 的优先级 – 例题
new(带参数列表) > 函数调用 > new(无参数列表) – 例题

本文详细介绍了JavaScript中的各种运算符,包括加号运算符、乘除法及乘方运算、模运算、位运算,以及比较和逻辑运算符。特别讨论了全等于运算符与Object.is的区别,并给出了运算符的优先级规则。
847

被折叠的 条评论
为什么被折叠?



