JS常见操作符

一、常见操作符

1. 一元操作符:只能操作一个值
  1. 递增、递减操作符
  • 在应⽤于对象时,先调⽤对象的 valueOf() ⽅法以取得⼀个可供操作的值。然后对该值应⽤前述规则。如果结果是 NaN,则再调⽤ toString() ⽅法后再应⽤前述规则。对象变量变成数值变量。
var o = {
 valueOf: function() {
 return -1;
} };
document.getElementById(o--);//-2
  • 在应⽤于⼀个不包含有效数字字符的字符串时,将变量的值设置为 NaN,字符串变量变成数值变量。var s2 = "1.1";s2++; // 值变成 NaN
  1. ⼀元加和减操作符
  • +号放在数值前⾯,对数值不会产⽣任何影响,不过,在对⾮数值应⽤⼀元加操作符时,该操作符会像 Number() 转型函数⼀样对这个值执⾏转换var s3 = "z";s3 = +s3;//NaN
  • 将⼀元减操作符应⽤于数值时,该值会变成负数。var s3 = "z";s3 = +s3;//NaN
  • 注意
    递增递减操作符和⼀元加减操作符作⽤于非数值的变量时,都会隐式调⽤ Number() 函数,区别在于递增递减操作符改变的是变量本身,⽽⼀元加减操作符不会改变变量⾃身的值。
2.布尔操作符
  1. 逻辑非
	alert(!undefined);alert(!NaN); alert(!null);//true,null、undefined、NaN返回true
	var p=new Object("kkk");
	alert(!p);//false,不是对象返回false
	alert(!""); // true是一个空字符串返回true
	alert(!"blue"); // false,是一个非空字符串
	alert(!0); // true
	alert(!Infinity);//false。非0数值返回false
  1. 逻辑与
  • 如果有一个操作数是null、NaN、undefined,则返回null、NaN、undefined
  • 如果第⼀个操作数是对象,则返回第⼆个操作数;
  • 如果第⼆个操作数是对象,则只有在第⼀个操作数的求值结果为 true 的情况下才会返回该对象;
  • 如果两个操作数都是对象,则返回第⼆个操作数;
    注意逻辑与和逻辑或操作属于短路操作,即如果第⼀个操作数能够决定结果,那么就不会再对第⼆个操作数求值。
  1. 逻辑或
  • 如果第⼀个操作数是对象,则返回第⼀个操作数;
  • 如果第⼀个操作数的求值结果为 false,则返回第⼆个操作数;
  • 如果两个操作数都是对象,则返回第⼀个操作数;
  1. 乘性操作符
    如果参与乘性计算的某个操作数不是数值,后台会先使⽤ Number() 转型函数将其转换为数值。也就是说,空字符串将被当作 0,布尔值 true 将被当作1。
alert(2*""); // 0
alert(true*5); // 5
alert(5/2); // 2.5,区别于C语言的结果2
alert(5%2); // 1
  1. 加性操作符
  • 如果有⼀个操作数是 NaN,则结果是 NaN;
  • 如果是 Infinity 加 负Infinity,则结果是 NaN;
  • 如果两个操作数都是字符串,则将第⼆个操作数与第⼀个操作数拼接起来;
  • 如果只有⼀个操作数是字符串,则将另⼀个操作数转换为字符串,然后再将两个字符串拼接起来。
  • 对于 undefined 和 null,则分别调⽤ String()函数并取得字符 串"undefined"和"null"
var num1 = 5;
var num2 = 10;
var message = "The sum of 5 and 10 is " + num1 + num2;//The sum of 5 and 10 is510,由于有字符串所以是拼接
var message =  num1 + num2;//15,数字的加法
document.write(message);
  1. 减性操作符
  • 如果有⼀个操作数是字符串、布尔值、null 或 undefined,则先在后台调⽤ Number() 函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转换的结果是 NaN,则减法的结果就是NaN;
  • 如果有⼀个操作数是 NaN,则结果是 NaN;
  • 如果是 Infinity 减 Infinity,则结果是 NaN;
  • var result7 = 1 - undefined; // NaN,因为 undefined 被转换成 NaN
  1. 关系操作符
    大于、小于、大于等于、小于等于
  • 如果两个操作数都是字符串,则⽐较两个字符串对应的字符编码值。
  • 如果一个是数值,则把另一个转换为数值来比较
  • 如果一个是布尔值,先转换为数值在比较
  • 如果是对象的话,则调⽤这个对象的 valueOf() ⽅法,⽤得到的结果按照前⾯的规则执⾏⽐
    较。如果对象没有 valueOf()⽅法,则调⽤ toString() ⽅法,并⽤得到的结果根据前⾯的规则执⾏⽐较。
var result7 = "a" < 3; // false,因为"a"被转换成了 NaN
任何操作数与 NaN 进⾏关系⽐较,结果都是 false。
  1. 相等和不相等(先强制转换再⽐较)
  • null 和 undefined 是相等的。⽐较相等性之前,不能将 null 和 undefined 转换成其他任何值。
  • 如果两个操作数都是对象,则⽐较它们是不是同⼀个对象。如果两个操作数都指向同⼀个对象(内存地址相同),则相等操作符返回 true;否则,返回 false。
  • 如果有⼀个操作数是 NaN,则相等操作符返回 false,不相等操作符返回 true。即使两个操作数都是NaN,相等操作符也返回 false。
NaN==NaN;//false
NaN!=NaN;//true
5==NaN;//false
5!=NaN;//true
null==0;//false
undefined==0;//false
null==undefined;//true
"7"==7;//true
  1. 全等和不全等(仅⽐较⽽不转换)
    全等和不全等操作符在比较之前不转换操作数,所以只有在两个操作数相等且类型相同的情况下,才全等
document.write(("1" !==1));//true
document.write(("1" ===1));//false
  1. 条件操作符、赋值运算符和C语言一样
  2. 逗号操作符
  • 定义多个变量
  • 用于赋值,返回表达式最后一项var 錒(1,2,4,5);//5‘
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值