一、逻辑运算符
1.逻辑运算符的种类
逻辑运算符一般用于布尔值的判断
(1)! 非
非就是讲boolean值反过来
!true //false
!false //true
(2)&& 与
与则是两者都为true时才为true,反之都为false,即
true&&true //true
true&&false //false
false&&true //false
false&&false //false
(3) || 或
或只要有一方为true,都是true,反之则为false,即
true&&true //true
true&&false //true
false&&true //true
false&&false //false
注意:
当&& 、||为非布尔值时的运算:将非布尔值转换为布尔值,在进行运算,并返回原值。
(1)与运算中,如果第一个值为true,则必然返回第二个值,如果第一个值为false,则返回靠前的false,如果两个值中有false,则返回靠前的false值。
var result=5&&6;//6
result =0&&2;//0
(2)或运算中,如果第一个值为true,则必然返回第一个值,如果第一个值为false,则返回第二个值。
result =0&&NaN;//NaN
二、赋值运算符
赋值运算符即是将符号右侧的值赋值给符号左侧的变量。
a+=5等价于a=a+5,而其他运算符都大同小异,只是将加号换成其他运算符。
三、关系运算符
关系运算符可以比较两个值之间的大小关系,成立返回true,不成立返回false,关系运算符即 <,>,=。
注意:对于非数值进行比较时,会将其转换为数字然后在比较,
如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而会分别比较字符串中字符的Unicode编码,详细的Unicode编码,请自行百度查询。
console.log('a'<'b');//true
a的编码为97,b的为98,因此返回为true。
比较字符编码时是一位一位进行比较,如果两位一样,则比较下一位,所以借用它来对英文进行排序。
console.log('abc'<'bcd');//true
字符串比较是根据ASCII码,若是比较两个字符串类型的数字,需将字符串转换为数字,否则比对结果可能会不正确。
console.log('88'>'232');//true
任何值和NaN做比较都是false。
console.log(10<="hello");//false
四、转换Unicode编码
在字符串中使用转义字符输入Unicode编码,具体使用为“\u四位编码”
console.log("\u2620");
"\u2620"是一个骷髅头字符
在网页中使用Unicode编码,具体为“&#编码”,这里的编码需要的是10进制
<h1 style="font-size: 200px;">☠</h1>
输出的具体字符如下图
五、相等运算符
相等运算符用来比较两个值是否相等,如果相等会返回true,否则返回false。
(1)==
当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后比较
console.log("1"==1);//true
console.log(true=="1");//true 转成number
console.log(null==0);//false 特殊情况 没有转
undefined和null与其他数在进行相等判断时不进行类型转换。
(2)!=
不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false,不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false。
(3)===
用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,会直接返回false
(4)!==
用来判断两个值是否不全等,它和不等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回true
注意:
NaN不和任何值相等,包括他本身,如果需要判断一个值是否是NaN,可通过isNaN()函数来判断,如果该值是NaN则返回true,否则返回false。
六、三元运算符
三元运算符也叫条件运算符,语法:条件表达式?语句1:语句2;
执行流程:1.首先对条件表达式进行求值,
2.如果该值为true,则执行语句1,并返回执行结果
3.如果该值为false,则执行语句2,并返回执行结果
如果条件表达式的求值结果是一个非布尔值,会将其转换为布尔值然后在运算
var a=10;
var b=20;
var c=50;
a>b?alert('a大'):alert("b大");