一、逻辑运算符
- 非!:对布尔值进行取反操作,如果是对非布尔值进行取反,则会先转换为布尔值,再取反。利用此特点可以将任意数据类型取两次反来将其转换为布尔值。原理和Boolean()一样。
- 与&&:JS中的“与”是短路的与,如果第一个值为false,则不会看第二个值。
- 或||:JS中的“或”是短路的或,如果第一个值为true,则不会看第二个值。
- 对非布尔值进行与或运算时,会将其先转换为布尔值,再进行运算,并且返回原值。
(1)与运算:如果第一个值为true,则必然返回第二个值,如果第一个值为false,则必然返回第一个值。
(2)或运算:如果第一个值为true,则返回第一个值,如果第一个值为false,则返回第二个值。
二、赋值运算符和关系运算符
- =、+=、-=、*=、/=:和C一样。
- >、<、>= 、<=、==。注意:任何值和NaN做比较都是false;对非数值进行比较,会将其转换为数字染回再进行比较;如果比较符号两侧都是字符串,不会将其转换为数值进行比较,而会分别比较字符的Unicode编码(一位一位比较,如果相同则比较下一位),所以在对两个字符串型的数字作比较时,要转型(+“5”)。
- 使用==或!=来做运算时,如果两个值的类型不同,则会自动进行类型转换,将其转换为相同类型。注意:undefined衍生自null,所以这两个值做判断时会返回true;NaN不和任何值相等,包括它本身(可以调用isNaN()函数判断一个值是否为NaN)。
- ===全等:用来判断两个值是否全等,他和相等类似,不同的是他不会做自动的类型转换,如果两个值得类型不同,直接返回false。例如:null和undefined相等但不全等。
- !==不全等:判断两个值是否不全等,羽泉等类似有不会做类型转换,如果两个值的类型不同,直接返回true。
<script type="text/javascript">
console.log(null==0);//false
console.log(null==undefined);//true
console.log(NaN==NaN);//false
</script>
- unicode编码问题:在字符串中使用转义字符输入Unicode编码:\u四位编码(16进制);在网页中使用Unicode编码:&#编码,这里的编码需要的是10进制。
三、条件运算符(三元运算符)
- 语法:条件表达式?语句1:语句2.(a>b?a:b)
- 执行流程:首先对表达式求值,如果该值为true,则执行语句1,并返回执行结果,如果该值为false,则执行语句2,并返回执行结果。
- 如果条件的表达式是一个非布尔值,会将其转换为布尔值然后再进行运算。
四、运算符优先级
大概知道就行
五、if语句
我感觉我又学了一遍C语言。。。。
就记一记switch吧。
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}