一、自增和自减
1、自增
前置++:先把变量的值加1,再进行取值操作
后置++:先取变量的值,然后再进行加1操作
var a=20;
++a; //让a的值加1
console.log(a) //21
var b=20;
b++; //让b的值加1
console.log(b) //21
var c=10
console.log(c++) //10
console.log(c) //取c变量中保存的值并打印 11
var d=10
console.log(++d) //11
console.log(d) //取d变量中保存的值并打印 11
2、自减
前置--:先把变量的值减1,再进行取值操作
后置--:先取变量的值,然后再进行减1操作
var a=20;
--a; //让a的值减1
console.log(a) //19
var b=20;
b--; //让b的值减1
console.log(b) //19
var c=10
console.log(c--) //10
console.log(c) //取c变量中保存的值并打印 9
var d=10
console.log(--d) //9
console.log(d) //取d变量中保存的值并打印 9
注:无论前置还是后置,都既有存值操作也有取值操作,一个变量只能保存一个数据
二、逻辑与运算符&&
&&符号相当于是and
var re=A&&B
//如果A为真,无论B是真是假都输出B
//如果A为假,无论B是真是假,都直接输出A
//0在做布尔判定时会判定为false
console.log(2 && 1) //打印1
console.log(0 && 2) //0 0为false,打印2
var a=true
var b=19
if(a&&b>18){
console.log(123) //打印123
}else{
console.log(456)
}
var a=false
var b=19
if(a&&b>18){ //a为false,a&&b输出false,然后false会转化成0,得到0<18,不符合判定条件,跳到else中运行
console.log(123) //打印456
}else{
console.log(456)
}
三、逻辑或运算符||
逻辑或操作符有两根竖线组成(||)
var re=A||B
//当A表达式布尔判定为true时,输出A,B不运行
//当A表达式布尔判定为false时,则输出B
逻辑或返回值判定简单方法只要有真就返回真
注:一些其他情况
1、如果第一个操作数是对象,则返回第一个操作数
2、如果两个操作数都是 null,则返回 null
3、如果两个操作数都是 NaN,则返回 NaN
4、如果两个操作数都是 undefined,则返回 undefined
var a = (5>4 || 3>9)
console.log(a) //true
var b = (6 || 9)
console.log(b) //6
var c = (false || undefined)
console.log(c) //undefined
var d = true
var e = (d || "hello")
console.log(e) //hello
四、逻辑非运算符!
逻辑非(取反)由一个叹号(!)表示
无论这个值是什么数据类型,这个操作符都会使其返回一个布尔值。
逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再取反。
console.log( !true ) //false
console.log( !2 ) //false 操作数为非 0数值,返回false
console.log( !"hello" ) //false 操作数是非空字符串,返回false
console.log( !"" ) //true 操作数是空字符串,返回true
console.log( !null ) //true 操作数 是null、undefined、NaN,返回true
console.log( !0 ) //true 操作数是数值0,返回true
console.log( !undefined ) //true
console.log( !NaN ) //true
当同时使用两个逻辑非操作符时,可以将该值转换为对应的布尔值
console.log( !!"hello" ) //true
console.log( !!null ) //false
五、比较运算符
小于(<) 、大于(>) 、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,比较的规则与我们在数学课上所学的一样,判断结果结果返回true或false
6 < 10
b > 20
a >= c
b <= d
var re=20
var re2=24
console.log(re>re2) //false
console.log( 13>16 ) //false
console.log( 19<32 ) //true
任何操作数与 NaN 进行关系比较,结果都是 false。
console.log( undefined>null ) //false
console.log( 1>"a" ) //false
connsole.log( 2<"he" ) //false
六、相等运算符
相等操作符用两个等号表示:==
不相等操作符用一个感叹号和一个等号表示:!=
相等比较原则:
1、如果是布尔值先将true转化为1,false转化为0,然后进行比较
2、如果有字符串,则先将字符串转化为数值,再进行比较
console.log(5 == 50) //false
console.log(1 != 2) //true
console.log(true == 1) //true
console.log(9 != "9") //false
一些特殊情况(可以直接背)
console.log(null == undefined) //true
console.log("NaN" == NaN) //false
console.log(1 == NaN) //false
console.log(NaN == NaN) //false
console.log(NaN != NaN) //true
console.log(undefined == 0) //false
console.log(null == 0) //false
全等操作符由三个等号表示:===
不全等操作符由一个一个感叹号 两个等号表示:!==
全等:只有在两个操作数未经转换就相等的情况返回true,其余都返回false
不全等:两个操作数未经转换就不相等的情况返回true,相等返回false
console.log(2 === 2) //true
console.log(null === undefined) //false
console.log("string" =="string") //true
console.log("1" !== 1) //true
七、三目运算符
expr?A:B :expr表达式会做布尔判定,判断结果为true,执行A,判断结果为false,执行B
var re = (3 > 2) ? 9:11 //由于3>2为真,所以执行A,也就是9,得到re=9
console.log(re) //9
var re2 = (null == undefined) ? {first:"hello"}:"world"
console.log(re2) //{first:"hello"}
var a = 18
var b = (a>=18) ? "adult":"child"
console.log(b) //adult
var x = "good" ? "boy":"girl"
console.log(x) //boy
八、in运算符
in运算符:检查右侧对象是否拥有左侧属性名,有的话就返回true,否则返回false
var a = {name:"Niko",age:20,telephone:12345678,address:"nan"}
console.log("name" in a) //true
console.log("agge" in a) //false
console.log("address" in a) //true
console.log("telephone" in a) //true
console.log("toString" in a) //true
console.log(20 in a) //false
九、逗号运算符
var re=A,S,D,F,G //re=G
//逗号隔开的表达式会全部执行,最后一个运行的表达式的结果就是逗号运算符的结果
var a,s,d,f=22;
//隐式操作 var a;var s;var d;var f=22
var re=(11+12,33,55);
console.log(re) //55