Javascript 强制类型转换函数
将其它的数据类型转换为String
方式一:
调用被装换数据类型的toString()方法
该方法不会影响原变量,他会将转换的结果返回
但是注意:null和undefined这两个值没有toStruing()方法,如果调用他们的方法,会报错
方式二:
调用toString()函数,并将被转换的数据作为参数传递给函数
使用toString()函数做轻质类型转换时,
对于Number和Boolean实际上就是调用的toString()方法
但是对于null和undefined,就不会调用toString()方法
他会讲null直接转换为"null"
将undefined直接转换为"undefined"
将其它的数据类型转换为Number
使用Number()函数
字符串 - - > 数字
1、如果是纯数字的字符串,则直接将其转换为数字
2、如果字符串中有非数字的内容,则转换为NaN
3、如果字符串是一个空串或者是一个全是空格的自符串,则转换为0
布尔 - - > 数字
true 转成 1
false 转成 0
null - - > 数字 0
undefined - - > 数字 NaN
调用parseInt()和parseFloat()函数转换为Number
parseInt()可以将一个字符串中的有效的整数内容去出来
parseFloat()作用和parseInt()类似,不同的是它可以获得有效的小数
如果对非String使用parseInt()或parseFloat()它会先将其转换为String然后在操作
将其他的数据类型转换为Boolean
使用Boolean()函数
数字 - - > 布尔
除了0和NaN,其余的都是true
字符串 - - > 布尔
除了空串,其余的都是true
null和undefined都会转换为false
其他进制数字
-
在js中,如果需要表示16进制的数字,则需要以0x开头
-
如果需要表示8进制的数字,则需要以0开头
-
如果要要表示2进制的数字,则需要以0b开头
-
但是不是所有的浏览器都支持
//十六进制 a = 0x10; a = 0xff; a = 0xCafe; //八进制数字 a = 070; //二进制数字 //a = 0b10;
js之运算符(算术运算符)
一、算术运算符
算术运算符包括一元算术运算符和二元算术运算符两种。
1、一元运算符
一元算术运算符包括一元加法(+)、一元减法(-)、递增(++)和递减(–)。只对一个表达式执行操作,并产生一个新值。
+/-:一元加减运算符
一元加法运算符把操作数转换为数字或者是NaN(用函数Number());
一元减法运算符它会根据需要把操作数转换为数字,然后改变运算结果的符号。
所以可以看出一元的加和一元减运算符主要用于基本的算术运算,也可以用于转换数据类型
JS中的逻辑运算符&&、||,位运算符|,&
1、JS中的||符号:
运算方法:
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
总结:真前假后
2、JS中的&&符号:
运算方法:
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
总结:假前真后
JS中的赋值运算符
赋值运算符:用以给变量进行赋值
最常见的赋值运算符就是等号(=),将右侧的值赋给左侧的变量(表达式x=y表示将y赋值给x)
还有其他更多的复合赋值运算
- x -= y 等同于 x = x - y
- x *= y 等同于 x = x * y
- x /= y 等同于 x = x / y
- x %= y 等同于 x = x % y
- x >>= y 等同于 x = x >> y
- x <<= y 等同于 x = x << y
- x >>>= y 等同于 x = x >>> y
- x &= y 等同于 x = x & y
- x |= y 等同于 x = x | y
- x ^= y 等同于 x = x ^ y
js之运算符(关系运算符)
关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或者是false.关系表达式总是返回一个布尔值。
一、关系运算符
用于进行比较的运算符称作为关系运算符:
小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等()、不等(!=)、全等(恒等)(=)、不全等(不恒等)(!==)、和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
1、两个操作数都是数值,则数值比较;
2、两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3、两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
4、两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较;
var box=3 > 2; //true
var box=3 > 22; //false
var box= '3' > 22; //false
var box= '3' > '22'; //true
var box= 'a' > 'b'; //false a=97,b=98
var box= 'a' > 'B'; //true B=66
var box= 1 > 对象; //false,如果有toString()或valueOf()则返回1 > 返回数的值
在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
1.一个操作数是布尔值,则比较之前将其转换为数值,false转成0,true转成1;
2.一个操作数是字符串,则比较之前将其转成为数值再比较;
3.一个操作数是对象,则先调用valueOf()或toString()方法后再和返回值比较;
4.不需要任何转换的情况下,null和undefined是相等的;
5.一个操作数是NaN,则==返回false,!=返回true;并且NaN和自身不等;
6.两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回true,否则返回false。
7.在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回false。
var box = 2 == 2; //true
var box = '2' == 2; //true,'2'会转成成数值2
var box = false == 0; //true,false转成数值就是0
var box = 'a' == 'A'; //false,转换后的编码不一样
var box = 2 == {}; //false,执行toString()或valueOf()会改变
var box = 2 == NaN; //false,只要有NaN,都是false
var box = {} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同
var age = {};
var height = age;
var box = age == height;//true,引用地址一样,所以相等
var box = '2' === 2 //false,值和类型都必须相等
var box = 2 !== 2 //false,值和类型都相等了
js中三元运算符
语法:条件?表达式1:表达式2
var even = (n % 2 === 0 ) ? true :false
上面代码的含义是 如果n可以被2整除,则even等于true,否则等于false