序
JavaScript中也有许多运算符,比如一元运算符、逻辑运算符、乘性运算符、加性运算符、关系运算符、等性运算符、条件运算符、赋值运算符、逗号运算符。学习这些知识是非常重要的,只有了解了运算符的使用方法和他们之间的关系,才能更好的灵活使用JavaScript。
一元运算符
一元运算符只有一个参数,即要操作的对象或值。它们是 ECMAScript 中最简单的运算符。
delete
delete运算符删除对以前定义的对象属性或方法的引用。
//delete
var obj = new Object();
obj.name = "wuhen";
document.write(obj.name +"<br>"); //返回 wuhen
delete obj.name; //删除name属性
document.write(obj.name +"<br>"); //返回undefined
删除了name属性意味着强制解除对它的引用,将其设置为undefined。delete运算符不能删除开发者未定义的属性和方法。
自增、自减运算符
形式 | 用法 |
---|---|
i++ | 先进行表达式计算,在自增 |
i– | 先进行表达式计算,在自减 |
++i | 先自增,在进行表达式计算 |
–i | 先自减,在进行表达式计算 |
//自增、自减运算符
var a = 10;
var b = 10;
var num1 = (a++ + 10);
var num2 = (++b + 10);
document.write("num1:"+num1+" a:"+a );
document.write("<br>");
//返回 num1:20 a:11 说明先进行表达式计算,在自增
document.write("num2:"+num2+" b:"+b);
document.write("<br>");
//返回 num2:21 b:11 说明先自增,在进行表达式计算
一元加法/减法
一元加法本质上对数字无任何影响,但对字符串却有有趣的效果,会把字符串转换成数字。
一元减法就是对数值求负,也会把字符串转换成近似的数字,此外还会对该值求负。
//一元加减法
var str = '100';
document.write(typeof str +"<br>"); //返回 string
document.write(typeof +str +"<br>"); //返回 number
document.write(typeof -str +"<br>"); //返回 number
逻辑运算符
与 &&
在ECMAScript 与运算的运算数可以是任何类型的,不止是布尔类型值。如果某个运算数不是布尔类型值,与运算并不一定返回布尔类型值。
与运算是短路运算,只要第一个操作数时false,不管第二个操作数如何结果都是false。
运算规则如下,且都要遵守短路运算:
- 如果第一个运算数是对象,则返回第二个操作数
- 如果两个运算数都是对象,返回第二个对象
- 如果某个运算数是 null,返回 null
- 如果某个运算数是 NaN,返回 NaN
//与运算
var obj1 = new Object();
var obj2 = new Object();
document.write(obj1 && 100 ); //返回100
document.write("<br>");
document.write(null && 100 ); //返回null
document.write("<br>");
document.write(false && null); //返回false
document.write("<br>");
document.write(NaN && null); //返回NaN
document.write("<br>");
或 ||
在ECMAScript中或运算和与运算相似,运算结果不一定是布尔类型值。且也是短路运算,只要第一个操作数时true,不管第二个操作数如何结果都是true。
非 !
与其他2个运算符不同,返回结果一定是布尔类型值。
运算规则:
- 如果运算数是对象,返回 false
- 如果运算数是数字 0,返回 true
- 如果运算数是 0 以外的任何数字,返回 false
- 如果运算数是 null,返回 true
- 如果运算数是 NaN,返回 true
- 如果运算数是 undefined,返回true
//非运算
document.write(!obj1); //返回false
document.write("<br>");
document.write(!100); //返回false
document.write("<br>");
document.write(!NaN); //返回true
document.write("<br>");
document.write(!undefined); //返回true
document.write("<br>");
学习总结
这一节先学习了一元运算符和逻辑运算符,逻辑运算符看着很多运算规则,其实只要弄清楚2点就行啦。其他类型转换成布尔类型是什么,与运算和或运算的短路操作原理,知道这2点就可以很好理解这些运算规则了。
每天进步一小点,十天一大步,继续加油吧。