1.5 运算符
1.5.1 定义
对值进行运算并得到结果
1.5.2 作用
告诉程序执行特定算术或逻辑操作的符号
1.5.3 分类
功能:算术运算符,逻辑运算符,位运算符,关系运算符
操作数个数:单目运算符,双目运算符,三目运算符
1.5.4 运算符的结合性
左结合性:从左至右运算
右结合性:从右至左运算
1.6 算术运算符
+
- 所有值和NaN做该运算,结果都是NaN
- 非数值型与数值型运算时会先转换为数值型
- 任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
-
- 所有值和NaN做该运算,结果都是NaN
- 非数值型与数值型运算时会先转换为数值型
- 字符串做减法也会转换为Number
*
- 所有值和NaN做该运算,结果都是NaN
- 非数值型与数值型运算时会先转换为数值型
- 字符串做乘法也会转换为Number
/
- 所有值和NaN做该运算,结果都是NaN
- 非数值型与数值型运算时会先转换为数值型
- 字符串做除法也会转换为Number
- 任何数除 0 ,都会得到Infinity(无穷大)
%
- 所有值和NaN做该运算,结果都是NaN
- 非数值型与数值型运算时会先转换为数值型
- 字符串做取余也会转换为Number
- m%n 求余,相当于m/n 获取余数
m为0 >>> 结果为0
n为0 >>> 结果为NaN
m>n >>> 正常运算
m>> 结果为m
1.7 一元运算符
1.7.1 “+”运算符
- +正号不会对数字产生任何影响
- 对于非Number类型的值,会将先转换为Number,然后再运算
1.7.2 “-”运算符
-
-负号可以对数字进行负号的取反
eg: var num = 456; num = -num; console.log(num); // -456
1.8 赋值运算符
1.8.1 简单赋值运算符
- 格式: 变量 = 数据
- 赋值运算符左边只能是变量
- 多个赋值运算符可以组成 赋值表达式, 赋值表达式具备右结合性
1.8.2 复合赋值运算符
- 分类:+= -= *= /= %=
- 格式: 变量 复合赋值运算符 表达式; 如: a *= 1 + 2;
- 由于赋值运算符是右结合性, 所以会先计算等号右边, 然后再进行复合运算
1.9 自增、自减运算符
- ++/- -前缀表达式:先变后用
- ++/- -后缀表达式:先用后变
注意点:+ +/- -无论在前在后,变量经过运算都会发生变化
1.10 逻辑运算符(&&、||、!)
1.10.1 逻辑与
-
一假则假
-
第一个值为true,会检查第二个值
true && alert(“我来了!!”); //会输出 我来了第一个值为false,不会检查第二个值
false && alert(“我没有来!!”); //不会输出 我没有来 -
对于非Boolean类型的数值, 逻辑与会自动将其转换为Boolean类型来判断
-
如果条件A不成立, 则返回条件A的数值本身
-
如果条件A成立, 不管条件B成不成立都返回条件B数值本身
1.10.2 逻辑或
-
一真则真
-
第一个值为false,则会检查第二个值
false || alert(“123”); //会输出123第一个值为true,则不再检查第二个值
true || alert(“123”); //不会输出123 -
对于非Boolean类型的数值, 逻辑或自动会将其转换为Boolean类型来判断
-
如果条件A不成立, 则不管条件B成不成立都返回条件B数值本身
-
如果条件A成立, 则返回条件A的数值本身
1.10.3 逻辑非
- 真变假,假变真
- 两次取反同一值,值不变
- 对非布尔值进行操作,则会将其转换为布尔值,然后再取反
1.11 关系运算符
-
存在意义:在某些特定条件下,执行某一段特定代码
-
在JavaScript中,条件成立称为“真”,条件不成立称为“假”,因此,判断条件是否成立就是判断条件的“真假”。
-
对于非数值进行比较时,会将其转换为数值然后在比较
-
如果符号两侧的值都是字符串时,不会将其转换为数字进行比较, 而会分别比较字符串中字符的Unicode编码
-
比较两个字符串型的数字,可能会得到不可预期的结果,所以, 在比较两个字符串型的数字时,一定要转型( parseInt()、parseFloat() )
console.log(null == 0); // false console.log(undefined == 0); // false console.log(NaN == NaN); // false
/*
可以通过isNaN()函数来判断一个值是否是NaN
如果该值是NaN则返回true,否则返回false
*/
var num = NaN;
console.log(isNaN(num)); // true
// undefined 衍生自 null, 所以返回true
console.log(null == undefined); // true;
console.log(null === undefined); // false;
// == 判断值是否相等
// == 会进行数据类型转换
console.log("123" == 123); // true
// === 判断值和类型时候同时相等
// === 不会进行数据类型转换
console.log("123" === 123); // false
1.12 逗号运算符
-
在JavaScript中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把多个表达式连接起来组成一个表达式, 称为逗号表达式。
var a, b, c, d; d = (a = 1 + 1,b = 3 * 4, c = 10 / 2); console.log(d); // 5
1.先计算表达式1, a = 2
2.再计算表达式2, b = 12
3.再计算表达式3, c = 5
4.将表达式3的结果返回给d
1.13 三目运算符
-
格式: 条件表达式 ? 语句1 : 语句2;
-
如果条件表达式为true,则执行语句1,并返回执行结果
-
如果条件表达式为false,则执行语句2,并返回执行结果
即:
// 弹第一个
true?alert(“语句1”) : alert(“语句2”);
// 弹第二个
false?alert(“语句1”) : alert(“语句2”); -
注意点:
条件运算符?和:是一对运算符,不能分开单独使用
如果条件的表达式的求值结果是一个非布尔值, 会将其转换为布尔值然后在运算
1.14 运算符的优先级
一个练习:
用户从键盘输入三个整数,找出其中最大的整数,并对其输出。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var a1,a2,a3;
a1 = +(window.prompt("请输入第一个数"));
a2 = +(window.prompt("请输入第二个数"));
a3 = +(window.prompt("请输入第三个数"));
console.log((a1>a2 ? a1 : a2) > a3 ? (a1>a2 ? a1 : a2) : a3) ;
</script>
</body>
</html>