标签:
++/--在前,则先运算再后续工作。在后则先后续工作再运算。比如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>第三章 运算符</title>
</head>
<body>
<h1>javaScript运算符</h1>
<script>
var a =3;
alert(a++); //3 先alert之后再自增。
alert(a); //4
</script>
</body>
</html>
一些特性:当操作对象不是有效数字时,javaScript会自动转换操作对象的类型。
<script> var a = true; var b = false; var c = "18.3"; var d = "18d2.4"; var e = new Object(); var f = ""; alert(++a); //2,true转换为1后自增 alert(++b); //1,false转换为0后自增 alert(++c); //19.3,字符串含有有效的数字字符,转换为数值型自增 alert(++d); //NaN,字符串不含有有效的数字字符,转换为NaN alert(++e); //Nan,调用e的valueOf()方法,然后返回NaN,继续调用toString()方法,还是NaN,无效数字字符串 alert(++f); //1,空字符串转换为0,然后自增 </script>
!:逻辑非操作符:它会首先将操作数转换为布尔值,然后取反,遵循以下规则:
!!:两次逻辑非操作相当于执行Boolean()函数。
&&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。
逻辑与操作可以用于任何类型的操作数,而不仅仅是布尔值,它遵循以下规则:
<script> var a = true; var b = false; var c = "18.3"; var d = "18d2.4"; var e = new Object(); var f = new Object(); var x=null; alert(b && c); //false,因为b就是false,所以永远不会是true。 alert(a && e); //Object,因为a为true,并且第二个操作数是对象,则返回对象。 alert(e && b); //false,因为e是对象,所以返回第二个操作数false alert(e && a); //true,因为e是对象,所以返回第二个操作数true alert(e && f); //Object,因为都是对象,所以返回第二个f。 alert(a && x); //undefined,因为x是undefined,并且a为true,如果a为false,则整个表达式是false,不是undefined。 // --------------------------- alert(a && (++c)); //++c运算了,返回结果是19.3,首先a为true,然后++c是19.3,但是19.3变成了一个Object,所以返回了Object alert(c); //19.3,可以看到++c运行了。 c = 0; alert(b && (++c)); //++c运算了,返回结果是false,因为b是false,所以++c根本不计算了 alert(c); //0 </script>
||:逻辑或与逻辑与差不多,也是短路操作符,如果第一个操作结果是true,就不会对第二个操作数进行计算,并且遵循以下结果:
由于||是短路操作符,所以可以利用这一特性为变量赋值提供后备操作。比如:
var my = var1 || var2,这样,var1优先赋值给my,如果var1没有有效值,则var2会赋值给my。
如果某个操作数不是数值型,javaScript会在后台调用Number()函数进行转换,然后进行计算。true转为1,false转为0,空字符串转为0。
<script> var a =""; var b = 3; var c = NaN; var d = undefined; var e = true; var f = false; alert(a*b); //0,因为空字符串会转为0 alert(e*b); //3,true转换为1 alert(f*b); //0,true转换为0 </script>
<script> var a="abc"; var b = 123; var c = undefined; var d = null; var e ="123"; alert(a+b); //abc123 alert(a+c); //abcundefined alert(a+d); //abcnull alert(b+e); //123123 </script>
也就是如果字符串类型要进行数值类型的相加,必须要转换为数值类型后才可以!
关系操作符:
<script> var a="123"; var b = 123; var c = "456"; alert(a==b); //true,a转换后相等 alert(a<c); //true,按照字母表“1”==49,“4”==52,所以是4大 </script>
标签:
原文地址:http://www.cnblogs.com/jingubang/p/4624013.html