目录
1.一元运算符:只有一个运算数的运算符
++, -- , +(正号)-(负号)
#: ++ -- :自增 自减
#:++(--)在前,先自增(自减),再运算
#:++(--)在后,先运算,再自增(自减)
# +(-):正负号
注意:在JS中,如果运算数不是运算符要求的类型,那么js引擎会自动的将运算数进行类型转换。
#:其它类型转number:
#:string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)
#:boolean转number:true转为1,false转为0
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var num = 3;
var a = ++num;
var num1 = 3;
var b = num1++;
document.write(num + "<br>"); //4
document.write(a + "<br>"); //4
document.write(b)//3
document.write("<hr>");
var c = +"123abc";
document.write(typeof (c) + "<br>");
alert(typeof (c));
document.write(c + 1 + "<br>");
document.write("<hr>");
var flag = +true;
var flag2 = +false;
document.write(typeof (flag) + "<br>"); //number
document.write(flag + "<br>");
document.write(flag2 + "<br>");
</script>
</body>
</html>
2.算数运算符
+ - * / % ...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>算数运算符</title>
</head>
<body>
<script>
/*
+ - * / % ...
*/
var a = 3;
var b = 4;
document.write(a + b + "<br>");
document.write(a - b + "<br>");
document.write(a * b + "<br>");
document.write(a / b + "<br>");
document.write(a % b + "<br>");
</script>
</body>
</html>
3.比较运算符:
比较方式:
1.类型相同:直接比较
#字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。
2.类型不同,先进行类型转换,在比较
#:===:全等于。 在比较之前,先判断类型,如果类型不一样,则直接返回false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>运算符比较</title>
</head>
<body>
<script>
document.write((3 > 4) + "<br>");
document.write(("abc" < "acd") + "<br>");
document.write(("123" === 123) + "<br>");
document.write(("123" == 123) + "<br>");
document.write("<hr>")
</script>
</body>
</html>
4.三元运算符
var c = a > b ? 1:0;
语法:
表达式? 值1:值2 ;
判断表达式的值,如果是true则取 值1,如果是false则取 值2 。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三元运算符</title>
</head>
<body>
<script>
/*
var c = a > b ? 1:0;
语法:
表达式? 值1:值2 ;
判断表达式的值,如果是true则取 值1,如果是false则取 值2 。
*/
var a = 3;
var b = 4;
var c = a > b ? 1:0;
alert(c);
</script>
</body>
</html>
5逻辑运算符:
&&: 与(短路)
||:或(短路)
!:非
其它类型转boolean:
1.number:0 或 NaN 为假,其它为真
2.string:除了空字符串(""),其它都是true
3.null或undefined :都是false
4.对象:所有对象都是true
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>逻辑运算符</title>
</head>
<body>
<script>
/*
逻辑运算符:
&&: 与(短路)
||:或(短路)
!:非
其它类型转boolean:
1.number:0 或 NaN 为假,其它为真
2.string:除了空字符串(""),其它都是true
3.null或undefined :都是false
4.对象:所有对象都是true
*/
var flag = true;
document.write(flag + "<br>");
document.write(!flag + "<br>");
document.write("<hr>");
var num = 3;
document.write(!!num + "<br>");
document.write("<hr>");
/* while (true){
}*/
document.write("<br>");
var str1 = "abc";
var str2 = "";
document.write(!!str1+ "<br>");
document.write(!!str2+ "<br>");
document.write("<hr>");
//null & undefined
var obj = null;
var obj2 ;
document.write(!!obj + "<br>");
document.write(!!obj2+ "<br>");
document.write("<hr>");
//null & undefined
var date = new Date();
document.write(!!date+ "<br>");
document.write("<hr>");
/* if (obj != null){
//防止空指针异常
}
*/
var obj3 = "54378dh";
if (obj3) {
//防止空指针异常
alert(123);
}
//js中可以这样定义,简化书写。
if (obj3 != null && obj3.length > 0){
alert(111);
}
var flag = true;
document.write(flag + "<br>");
document.write(!flag + "<br>");
document.write("<hr>");
//number
var num = 3;
var num2 = 0;
var num3 = NaN;
document.write(!!num + "<br>");
document.write(!!num2 + "<br>");
document.write(!!num3 + "<br>");
document.write("<hr>");
</script>
</body>
</html>