运算符
运算符也叫操作符
* 通过运算符可以对一个或多个值进行运算,并获取运算结果
* 比如:typeof就是运算符,可以来获得一个值的类型
* 它会将该值的类型以字符串的形式返回
* number string boolean undefined object
算数运算符
* 当对非Number类型的值进行运算时,会将这些值转换为Number然后在运算
* 任何值和NaN做运算都得NaN
*** +**
* +可以对两个值进行加法运算,并将结果返回
* 如果对两个字符串进行加法运算,则会做拼串
* 会将两个字符串拼接为一个字符串,并返回
* 任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼
串的操作
任何值和字符串相加都会转换为字符串,并做拼串操作
我们可以利用这一特点,来将一个任意的数据类型转换为String
我们只需要为任意的数据类型 + 一个 "" 即可将其转换为String
这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数
任何值做- * /运算时都会自动转换为Number
我们可以利用这一特点做隐式的类型转换
可以通过为一个值 -0 *1 /1来将其转换为Number
原理和Number()函数一样,使用起来更加简单
- : - 可以对两个值进行减法运算,并将结果返回
*: * 可以对两个值进行乘法运算
/: / 可以对两个值进行除法运算
% : % 取模运算(取余数)
// console.log([]==false);
// console.log([]==true);
// console.log({}==false);
// console.log({} == true);
// console.log(null == 0);
// console.log(null==false);
// console.log(null==true);
// console.log(null == undefined);
// 关于==的比较规则大体有一下几点:
// 1、操作数为数字与字符串时,将字符串转换为数字,再比较值
// 2、操作数为布尔和非布尔时,现将布尔转换为数字,再比较值
// 3、普通类型(布尔/字符串/数字)和对象类型(数组、对象等)比较时,现将对象类型进行toString()的转换,如果操作数有布尔类型,则现将布尔类型转换为数字,然后在进行对象的转换,再比较值
// 4、null和undefined,关于它们更多的是记住规则:(1)null == undefined (2)null与undefined不能进行类型转换(换句话说不能进行类型转换,那么怎么能进行同其他类型的比较呢?那自然就是false了)
// - 数字 —> 布尔
// 除了0和NaN,其余的都是true
// - 字符串 —> 布尔
// 除了空串,其余的都是true
// - null和undefined都会转换为false
// - 对象也会转换为true
// - 字符串 –> 数字
// 1.如果是纯数字的字符串,则直接将其转换为数字
// 2.如果字符串中有非数字的内容,则转换为NaN
// 3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
// - 布尔 –> 数字
// true 转成 1
// false 转成 0
// - null –> 数字 0
// - undefined –> 数字 NaN
// var a = [];
// a = a.toString();
// console.log(a)
// console.log(a==0);
// var b = {};
// b = b.toString();
// console.log(b)
// console.log(Number(b));
// console.log(b == 0);