一、逻辑运算符
逻辑运算符
&& || !
* 其他类型转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>
<script>
//boolean
var flag = true;
document.write(flag + "<br>");
document.write(!flag + "<br>");
document.write("<hr>");
//int
var num = 3;
document.write(!num+ "<br>") //false
document.write(!!num+ "<br>") //true
var num2 = 0;
var num3 = NaN;
document.write(!num2+ "<br>") //true
document.write(!!num + "<br>") //true
document.write(!num3+ "<br>") //true
document.write(!!num3+ "<br>") //true
document.write("<hr>");
//string
var str1 = "abc"
var str2 = ""
document.write(!!str1 + "<br>") //true
document.write(!!str2 + "<br>") //false
document.write("<hr>");
//null undefined
var obj = null;
var obj2;
document.write(!!obj + "<br>") //false
document.write(!!obj2 + "<br>") //false
document.write("<hr>");
var date = new Date()
document.write(!!date + "<br>")
//下面两个if是等价的
if(obj != null && obj.length > 0) { //防止空指针异常
}
if(obj) { //防止空指针异常
}
</script>
</head>
<body>
</body>
</html>二、三元运算
三元运算符
? : 表达式
var a = 3;
var b = 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>
<script>
var a = 3;
var b = 4;
var c = a > b ? 1:0;
alert(c)
</script>
</head>
<body>
</body>
</html>三、一元运算符
运算符
1. 一元运算符:只有一个运算数的运算符
++,-- , +(正号)
* ++ --: 自增(自减)
* ++(--) 在前,先自增(自减),再运算
* ++(--) 在后,先运算,再自增(自减)
* +(-):正负号
* 注意:在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
* 其他类型转number:
* string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)
* boolean转number:true转为1,false转为0
2. 算数运算符
+ - * / % ...
3. 赋值运算符
= += -+....
--------------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>一元运算符</title>
<script>
var num = 3;
var a = ++ num;
document.write(num); //4
document.write(a);
document.write("<hr>")
var b = +"abc"
alert(typeof (b)) //number类型
alert(b + 1) //NaN
document.write("<hr>")
var flag = + true
var f2 = + false
document.write(typeof (flag) + "<br>") //number
document.write(flag + "<br>") //1
document.write(f2 + "<br>") //0
</script>
</head>
<body>
</body>
</html>四、算术&比较运算符
算数运算符
+ - * / % ...
------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>算术运算符</title>
<script>
var a = 3;
var b = 4;
document.write(a+b + "<br>") //7
document.write(a-b + "<br>") //-1
document.write(a*b + "<br>") //12
document.write(a/b + "<br>") //0.75
document.write(a%b + "<br>") //3
</script>
</head>
<body>
</body>
</html>
比较运算符
> < >= <= == ===(全等于)
* 比较方式
1. 类型相同:直接比较
* 字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。
2. 类型不同:先进行类型转换,再比较
* ===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
------------------------------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>比较运算符</title>
<script>
document.write((3 > 4) + "<br>") //false
document.write(("abc" < "acd") + "<br>") //true
document.write(("123" == 123) + "<br>") //true
document.write(("123" === 123) + "<br>") //false
</script>
</head>
<body>
</body>
</html>