JavaScript类型转换
JavaScript 类型转换
Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。
5 种不同的数据类型:string number Boolean object function
3 种对象类型:object date array
2 个不包含任何值的数据类型:null undefined
使用 typeof 操作符来查看 JavaScript 变量的数据类型。
constructor 属性返回所有 JavaScript 变量的构造函数。查看是对象是否为日期或者数组。function isDate(myDate) { return myDate.constructor.toString().indexOf("Date") > -1; }
显示类型转换:
(转化为字符串)
将数字转换为字符串:String(123) // 将数字 123 转换为字符串并返回 或者 (123).toString()
将布尔值转换为字符串:String(false) // 返回 "false" false.toString() // 返回 "false"
将日期转换为字符串:String(Date()) // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time) Date().toString()
自动转换为字符串:当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法:数字和布尔值也经常相互转换:var
age=11;
age.toString());
//"11"
(转化为数字)
将字符串转换为数字:字符串包含数字(如 "3.14") 转换为数字 (如 3.14). 其他的字符串会转换为 NaN (不是个数字)。
null:返回0 ; undefined,返回NaN Number(" ") //空字符串转返回0
将布尔值转换为数字:Number(false) // 返回 0 Number(true) // 返回 1
将日期转换为数字:d = new Date(); Number(d) // 返回 1404568027739 或者 d = new Date(); d.getTime()
当设置为“null”时,可以用来清空对象:值为空,但类型是对象
undefined 是一个没有设置值的变量
隐示类型转换:
运算中的隐示转换:
1、递增递减操作符:包含有效数字字符的字符串时,先转换为数字值,再进行运算 s1=
"1"
,
console.log(++s1);
//2
不包含有效数字字符的字符串时,将其值转换为NaN s2=
"12abc"
,
console.log(++s2);
//NaN
是布尔值时,false转换为数值0,true转换为数值1
是对象时,先调用对象的valueOf()方法,以取得一个可供操作的值,如果结果是NaN,调用toString() 方法
2、一元加减操作符:
一元加号(+)放在数值前面,对数值不会产生任何影响。
一元减号(-)放在数值前面,会改变数值的正负号。
在对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。
+ 可用于将变量转换为数字:var y = "5"; // y 是一个字符串 var x = + y; // x 是一个数字
var y = "John"; // y 是一个字符串 var x = + y; // x 是一个数字 (NaN) 如果变量不能转换,它仍然会是一个数字,但值为 NaN (不是一个数字):
3、 加法
如果两个操作数都是数值,执行常规的加法计算 如有一个操作数是NaN,结果是NaN
如果两个操作数都是字符串,将两个字符串拼接 如果只有一个操作数是字符串,将另一个操作数转换为字符串,然后再将两个字符串拼接
如果有一个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,在应用上述的字符串规则。对于undefined和null,则分别调用String()函数并取得字符串"undefined"和"null"
4、减法
如果两个操作数都是数值,执行常规的加法计算 如有一个操作数是NaN,结果是NaN
如果有一个操作数是字符串、布尔值、null或undefined,先在后台调用Number()函数将其转换为数值,再计算,如果转换结果是NaN,则结果是NaN
如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值,如果得到的值是NaN,则结果就是NaN。如果对象没有valueOf()方法,则调用toString()方法
巧用+/-规则转换类型
var a =1 +" "; / /"1" 转换成了字符串
var
a =
"1"
-0; //1 转换成了数字
5、乘性操作符
3个乘性操作符:乘法、除法、求模
如果参与乘性操作数不是数值,后台会先使用Number()转型函数将其转换为数值。 也就是说空字符串转为0,true转为1,flase转为0
6、关系操作符
关系操作符:< > <= >=
当关系操作符的操作数有非数值时,要进行数据转换,规则如下
(1)如两个操作数都是数值,则执行数值比较
(2)如两个操作数都是字符串,则比较两个字符串对应的字符编码值
(3)如一个操作数是数值,将另一个操作数转换为数值,然后执行数值比较
(4)如果一个操作数是对象,则调用对象的valueOf()方法,再按照上面的规则,如没有valueOf()方法,则调用toString()方法
(5)如一个操作数是布尔值,则先转换为数值,再进行比较,true转换为1,flase转换为0
7、相等操作符
相等== 不相等 != 这两个操作符都会先转换操作数,然后再比较它们的相等性
(1)如果有一个操作数是布尔值,比较前先转换为数值,false转为0,true转为1
(2)如果一个操作数是字符串,另一个操作数是数值,比较前先将字符串转换为数值
(3)如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,
(4)null==undefined
(5)在比较相等性前,不能将null和undefined转换为其他任何值
(6)如果一个操作数是NaN,相等操作返回false,不相等操作返回true 。 NaN不等于NaN
(7)如果两个操作数是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作返回true