表达式:表达你的想法或者说示意图。
理解:表达式与数学中的定义相似,表达式是指具有一定的值,用操作符把常数和变量连接在一起的代数式。
一个表达式可以包括常数、变量、操作符。
一、JavaScript操作符(运算符):
1.一元操作符(单目操作符):
递增和递减操作符(分前置和后置型)
++是递增操作符/--是递减操作符
i++ 先赋值,再自加
i-- 先赋值,再自减
当不出现赋值时,执行自增/自减运算;但出现赋值时,先赋值,后运算;
++i 先自加,再赋值
--i 先自减,再赋值
*一元加、减操作符
这两种操作符将执行Number()转型函数功能。区别就是减操作符执行Number()转型函数功能后,将得到的数转为负数。
var a = "1";
console.log(-a);//a = -1
2.加性操作符
+加法操作符
var sum = 2 + 4 ;//6
var sum = 2 + "4";//24
var sum = 2 + "4a";//NaN
如果运算中出现字符串类型,+将执行拼接的功能,转为字符串。
-减法操作符
如果有一个操作数是字符串、布尔值、null或undefined,则先在后台调用Number()函数,将其转换为数值,然后再根据前面的规则进行减法运算。
如果转换的结果是NaN,则减法的结果就是NaN。
var r1 = 5 - true;//4,trur被转换成了1
var r2 = 5 - null;//5,null被转换成了0
var r3 = 5 - 2 ;//3
3.乘性操作符
乘性操作符遇到非数值型将执行Number()转型函数功能。(隐式类型转换)
*乘法操作符
/除法操作符
%取余操作符
求模操作(余数)符由一个百分号(%)表示
var sum = 4 % 5 ;//4,取0余4
4.关系操作符
<、>、<=和>=这几个关系操作符用于对两个值进行比较,这几个操作符都返回一个布尔值
比较的是字符的编码数字的大小,小写字母的的数值大于大写字母的数值,26个字母数值依次递增,如果首个字符相同,比较第二个,以此类推
var result = "23" < "3";//true
var result = "23" < 3;//false
var result = "a" < 3;//false,因为“a”被转换成NaN
根据规则,任何操作数与NaN进行关系比较,结果都是false。
5.相等操作符
相等和不相等——先转换再比较(仅仅比较转换后的值)
全等和不全等——仅比较不转换(不仅比较值,还比较类型)
都返回布尔值(true或false)
1)相等和不相等(==和!=)
返回为true的总结:
null == undefined
1 == true
0 == false
"" == 0
"" == false
NaN != NaN
true == "1"
false == "0"
2)全等和不全等(===和!==)
除了在比较之前不准换操作数之外,全等和不全等操作符与相等和不相等操作符没有什么区别。
*布尔操作符(逻辑操作符)
布尔操作符有三种:!非、&&与、||或
&&(与):找第一个为false的值并返回,如果没找到则返回最后一个操作数的值
||(或):找第一个为true的值并返回,如果没找到则返回最后一个操作数的值
几乎所有语言中||和&&都遵循“短路”原理
!非
1)无论操作数是什么数据类型,逻辑非都会返回一个布尔值。(只能返回true或false)
2)逻辑非操作符首先会将它的操作数转换为一个布尔值然后再对其求反
*赋值操作符
= += -= *= /= %=
var i = 1;
i += 2;
console.log(i);//3(1+2=3)
*逗号操作符
使用逗号操作符可以在一条语句中执行多个操作,
var a = 1, b = 2, c = 3,
逗号操作符多用于声明多个变量,但除此之外,逗号操作符还可以用于赋值。在用于赋值时,逗号操作符返回表达式中的最后一项
*位操作符
按位非(~)、按位与(&)、按位或(|)、按位异或(^)
按位异或运算(^) n ^ n
运算规则:两个数转为二进制,从高位开始比较,相同为0,不同为1。最后将比较得到的结果转为十进制
位与运算符(&) n & n
运算规则:两个数都转为二进制,然后从高位开始比较,两数相同为1,否则为0。最后将比较得到的结果转为十进制
位与运算符(|) n | n
运算规则:两个数都转为二进制,然后从高位开始比较,两数只要有一个是1则为1,否则为0。最后将比较得到的结果转为十进制
位与运算符(~)
运算规则:如果位为0,结果为1;如果位位1,结果为0
~37//-38
~-56//55
(负数比正数大1)