表达式
表达式是用于javascript脚本运行时进行计算的式子,可以包含常量,变量,运算符
运算符
- 算数运算符
- 字符连接符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 三元运算符
- 其他运算符
算数运算符
算数运算符就是我们平常生活中用到的加减乘除.
加法 +
- 普通加法
var num = 1; var num2 = 2; var num3 = num + num2; console.log(num3); //输出结果是3
- 自增和自减
自增(自减)是在原来的结果之上加1或减1.但是自增和自减分钟前缀和后缀,不同的位置,执行的事件也不相同
- 前缀形式先加减1,再执行其他语句
- 后缀,先执行其他语句,再进行加减
var num = 1;
console.log(num++);//先输出,然后再进行+1
console.log(num);//num已经是之前语句运行的结果,是2
var num2 = 3;
console.log(++num);//先对num2进行+1操作,然后再执行console语句,输出结果为4
console.log(num);//输出结果为4
- 字符连接符
在之前的章节中,我们说过,所有数据和字符串进行相加运算,得到的结果都是字符串.因此,在和字符串进行相加的时候,+就是作为一个字符连接符来使用
var num = 1; var str = "2"; console.log(typeof(num+str));//输出结果是String
减法
var num = 10;
console.log(num-1);
乘法
var num = 10;
var rs = num *3;
除法
- 普通除法,得到结果
- 取余,取余数
var num = 10 var rs = num/3; //3.333 console.log(num%2);//0 console.log(num%3);//1
赋值运算符
=
我们曾声明过很多变量,其中有一个 = .我们习惯地称它为等于号.但是在编程语言里,它并不是等于号.而是一个赋值符号.例如 var name = "javascript" 就是将字符串"javascript"赋值运算给左边的变量name;
- +=
在原来的基础上,加上 右边的值
var num = 10; num += 1; console.log(num);//输出结果为11
- -=
在原来的基础上,减去右边的值
var num = 10; num -= 2; console.log(num); //输出结果8
*= 在原来的基础上,乘以右边的值
var num = 10; num *= 2; console.log(num);//输出结果20
/= 在原来的基础上,除以右边的值
var num = 10; num /= 2; console.log(num);//输出结果5
%= 在原来的基础上,取余赋值
var num = 10; num %= 3; console.log(num);//输出结果num
比较运算符
- 等于和全等于
- 不等于和不全等于
- 大于 >和大于等于 >=
- 小于 < 和小于等于 <=
等于和全等于
- == 等于,只需要值一样就可以,包括隐式转换后的值
- === 全等于,需要满足两个条件,值相同,数据类型相同
var num1 = 10;
var num2 = 10;
console.log(num1 == num2); //true
console.log(num1 === num2); //true
var num3 = "10";
console.log(num1 == num3);//true
console.log(num1 === num3); //false
不等于和不全等于
- != 不等于,值不相等
- !== 不全等于,值和类似不相等
var num1 = 10;
var num2 = 11;
var num3 = "10";
console.log(num1 != num2); //结果为true
console.log(num1 != num3); //结果为false
console.log(num1 !== num3);//结果为true
大于和大于等于
- 大于 >
- 大于等于 >=
var num1 = 10; var num2 = 9; var num3 = 11; console.log(num1>num2);//true console.log(num1>=num2);//true
小于和小于等于
- 小于 <
- 小于等于 <=
var num1 = 10; var num2 = 9; console.log(num1<num2);//false console.log(num1<=num2);//false
逻辑运算符
逻辑运算符如下表所示 (其中expr可能是任何一种类型, 不一定是布尔值):
运算符 | 语法 | 说明 |
---|---|---|
逻辑与,AND(&&) | expr1 && expr2 | 若 expr1 可转换为 true,则返回 expr2;否则,返回 expr1。 |
逻辑或,OR() | expr1 or expr2 | 若 expr1 可转换为 true,则返回 expr1;否则,返回 expr2。 |
逻辑非,NOT(!) | !expr | 若 expr 可转换为 true,则返回 false;否则,返回 true。 |
短路计算
由于逻辑表达式的运算顺序是从左到右,也可以用以下规则进行"短路"计算:
- (some falsy expression) && (expr) 短路计算的结果为假。
- (some truthy expression) || (expr) 短路计算的结果为真。
短路意味着上述表达式中的expr部分不会被执行,因此expr的任何副作用都不会生效(举个例子,如果expr是一次函数调用,这次调用就不会发生)。造成这种现象的原因是,整个表达式的值在第一个操作数被计算后已经确定了
逻辑与(&&)
a1 = true && true // t && t 返回 true
a2 = true && false // t && f 返回 false
a3 = false && true // f && t 返回 false
a4 = false && (3 == 4) // f && f 返回 false
a5 = "Cat" && "Dog" // t && t 返回 "Dog"
a6 = false && "Cat" // f && t 返回 false
a7 = "Cat" && false // t && f 返回 false
a8 = '' && false // f && f 返回 ""
a9 = false && '' // f && f 返回 false
逻辑或(||)
o1 = true || true // t || t 返回 true
o2 = false || true // f || t 返回 true
o3 = true || false // t || f 返回 true
o4 = false || (3 == 4) // f || f 返回 false
o5 = "Cat" || "Dog" // t || t 返回 "Cat"
o6 = false || "Cat" // f || t 返回 "Cat"
o7 = "Cat" || false // t || f 返回 "Cat"
o8 = '' || false // f || f 返回 false
o9 = false || '' // f || f 返回 ""
逻辑非(!)
n1 = !true // !t 返回 false
n2 = !false // !f 返回 true
n3 = !'' // !f 返回 true
n4 = !'Cat' // !t 返回 false