typeof就是一种运算符
+
可以对数值直接进行加法运算
如果对两个字符串进行加法运算就会拼串
任何值和字符串加一起是字符串
- * /
-将数值进行减法运算
*乘法 /除法 这三种在运算时都会转化为number
可以用-0 *1 /1 把类型变为number类型
一元运算符
比如typeof +表示正号 -表示负号;
对于非number的值 计算时会先转换为number 再进行运算
var a = 123;
a = -a;
console.log(a);
console.log(typeof a);
a = "123";
console.log(typeof a);
a = -a;
console.log(a);
console.log(typeof a);
var result = 1 + "2" + 3;
console.log(result);
result = 1 + +"2" + 3;
console.log(result);
结果图
自增和自减
a++ 和++a
a++表示自加前的值 ,++a表示自加后的值
但是两个都会使原变量立即加一。
a--表示自减前的值,--a表示自检后的值
逻辑运算符
!非 对于非Boolean值进行非运算,就会先变为Boolean类型在进行非运算,故对任意类型进行两次!!,则会得到该值对应布尔值。
&&与 两个都是true 才会返回true(只要有一个false 就返回false )
||或 只要有一个true就返回true
对于非布尔值进行与或运算,会先转换为布尔值在运算,返回原值。
赋值运算
a+=5 等于a = a+5;
a-=5 等价于a = a-5;
=
关系运算符>= <= = > <
任何值和NaN比都是false
任何类型和数值型作比较都会先转换为数值型在比较
比较两个字符串时,会比较字符串的字符编码, 比较字符编码时是一位一位进行比较。
所以如果比较的是两个字符串型的数字,可能得到不可预期的结果。所以比较两个字符串型的数字时,一定要记得转型。
编码
在js中使用Unicode编码只要在编码前面加\u即可,
在网页中使用需要加上&#(但是这里的编码必须是十进制的)
相等运算符
console.log(NaN == NaN);
console.log(1 == "1");
console.log(2 == NaN);
console.log(null == undefined);
console.log("abc" == 2);
console.log(NaN != NaN);
console.log(1 != "1");
输出结果
== 和!= 对于不同类型的比较会做自动转换
但是=== 和!==不会做自动转换。
条件运算符
条件表达式? 语句1:语句2;
条件表达式true,则执行语句1,并返回执行结果。
条件表达式false ,执行语句2,并返回执行结果。
var a = 23;
var b = 35;
var c = 49;
var max = a > b ? a : b;
max = max > c ? max : c;
console.log(max);
输出结果:4