算术运算符
- 算术运算符
主要是+ (加)、- (减)、* (乘)、/ (除)、% (取余)等简单运算,以下借用操作系统中的node环境进行直接输出举例。
一元运算符
- 递增递减操作符
++ 表示每次递增1,– 表示每次递减1。常用于遍历操作,比如要遍历某个数组,求所有值的和,需要将数组中的每个值逐个取出叠加,每次取值的时候都需要将索引递增1。(输出结果在当行输出的//注释后)
//++ -- 前置++ -- 后置++ --
//递增1 递减1
var a = 15;
a++; //a = a+1;
++a; //a = a+1;
console.log(a); //16
var b = 15;
var c = b++;
console.log(b,c); //16 15
//前置,先++,再使用
var d = 15;
var e = ++d;
console.log(d,e); //16 16
总结:(1)后置++,–,先使用a,后++,–。
(2)前置++,–,先++,–,再使用a。
- 赋值运算符
常用的有*=,/=,%=,+=,-= 。
var a = 5;
a += 5; //a = a+5;
console.log(a); //10
a -= 2; //a = a-2;
console.log(a); //8
a *= 10; //a = a*10;
console.log(a); //80
a /= 5; //a = a/5;
console.log(a); //16
a %= 3; //a = a%3;
console.log(a); //1
-
一元运算符+
相当于调用Number(),将其他数据类型转换为number类型 。 -
一元运算符-
(1)将一元减应用于数值时,数值会变成负数。
(2)将一元减应用于非数值时,遵循与一元加操作符相同的规则,最后将得到的数值转化为负数。
//应用于数值时
console.log(+10); //10
console.log(-10); //-10
//应用于非数值时
var a = '123';
console.log(typeof a); //string
//将字符串转换成number类型
var result = +a; //123
console.log(result,typeof result); //123 number
console.log(-a); //-123
console.log(+'123'); //123
console.log(+'hello'); //NaN
console.log(+'123a'); //NaN
console.log(+'12.3'); //12.3
console.log(+'12.3.4'); //NaN
console.log(+'016'); //16 (不识别八进制,识别成十进制)
console.log(+'0xaa'); //170 (识别十六进制)
console.log(+' 123'); //123
console.log(+'12 3'); //NaN (可识别字符串最前面和最后面的空格,字符串内的空格不可识别)
console.log(+' 123 '); //123
console.log(+''); //0 (空字符串转成number是0)
console.log(+' '); //0 (空格字符串转成number是0)
//将boolean使用+转换成number
console.log(+true); //1
console.log(+false); //0
console.log(+undefined); //NaN
console.log(+null); //0
总结:(1)’’,"",false,null等转换为number类型时,直接为0,undefined则转换成NaN,true则被转换成1。
(2)不识别八进制,直接识别成十进制。识别十六进制。
(3)可识别字符串最前面和最后面的空格,字符串内的空格不可识别。
比较运算符
比较运算符有 ==
、 ===
、 !=
、!==
、 <
、 <=
、>
、>=
等,且返回都是true
/false
。
逻辑运算符
- 逻辑非 ! / !!
该操作符应用任何类型数值都返回一个【布尔值】。先将任意类型的数值转换为Boolean,然后取反。
var a = true;
//!a 取反 false
//!a 取反再取反 true
console.log(!a); //false
console.log(!!a); //true
//string-->boolean
console.log('----string-->boolean-------');
console.log(!!'hello'); //true
console.log(!!' '); //false
console.log(!!''); //false
//number-->boolean
console.log('------number-->boolean------');
console.log(!!1); //true
console.log(!!2); //true
console.log(!!0); //false
console.log(!!NaN); //false
console.log(!!Infinity); //true
console.log('-------null-->boolean- false');
console.log(!!null); //false
console.log('-------undefined-->boolean- false');
console.log(!!undefined); //false
- 逻辑与&&
逻辑与&&,有假则假。如果第一个数为假性值(’’,0,NaN,null,undefined,false),直接返回第一个数,否则返回第二个数。
console.log(""&&123); //'' 空字符串
console.log(0&&null); //0
console.log(123&&345); //345
console.log(123&&undefined); //undefined
console.log(!!(123&&undefined)); //false
console.log(!!123&&undefined); //undefined
- 逻辑或 ||
逻辑或 || 短路运算符,有真则真,同假才假。如果第一个为真,直接返回第一个数,否则返回第二个数。
console.log(0||123); //123
console.log(NaN||undefined); //undefined
console.log(123||345); //123
console.log(123||undefined); //123
console.log(''||123); //123
三元运算符
三目运算符的书写格式为:表达式?值1:值2 。如果表达式成立,用值1,表达式不成立,则用值2。
console.log(3<5?1:2); //1
console.log(3>5?1:2); //2
var a =5
10<20?a++:a--;
console.log(a); //6