强制类型转换
- 指将一个数据类型强制转化为其他的数据类型
- 类型转换主要指将其他的数据类型转换为 String Number Boolean
一、将其他的数据类型转换为String
1.调用被转换数据类型的toString()方法
- 该方法不会影响到原变量,它会将转换的结果返回
- 但是注意:null 和 undefined没有toString()方法,调用会报错
2.调用String()函数
- 被转换的数值将作为参数传递给函数
- 使用String()函数强制转换数据类型的时候,对Number和Boolean实际上就是调用的toString()方法
- 但是对于null和undefined是直接转换的
var a = 123;
a = a.toString();
console.log(a, typeof a);
var b = true;
b = b.toString();
console.log(b, typeof b);
var c = null;
// c = c.toString();--会报错
var d = undefined;
// d = d.toString();--会报错
var e = 456;
e = String(e);
console.log(e, typeof e);
二、将其他数据类型转化为Number
1.使用Number()函数
- 如果是纯数字字符串可以直接转换为数字
- 如果数字串中有非数字的字符,则转换为NaN
- 如果字符串为空或者全是空格,会转换为0
- true转换为1 false转换为0
- null转化为0
- undefined转换为NaN
2.针对字符串
- parsInt()可以将一个字符串中的有效整数内容取出来转换为数值
只能取到最前面的第一个整数部分 - parsFloat()可以将一个字符串中的有效浮点数内容转换为数值
只能取到最前面的第一个浮点数部分 - 如果字符串的第一位非数字,将直接放弃读数。(即读数的规则是开始读数,直到不是数字时结束)
- 如果对非String使用以上两个函数,它们会将其先转换为String,然后再操作
var f = "777.456ll789.987";
f = parseInt(f);
var g = "888.456rr789.987";
g = parseFloat(g);
console.log(f, typeof f, g, typeof g);
var h = true;
h = parseInt(h);
console.log(h, typeof h);
三、将其他数据类型转化为Boolean
- 数字 ==> 布尔:除了0 和 NaN都是true
- 字符串 ==> 布尔:除了空串,都是true
- null & undefined ==> 布尔:false
- 对象也会转换为true
引~其他进制的数字
- 0x开头表示十六进制
- 0开头表示八进制
- 0b开头表示二进制
( 但是不是所有浏览器都支持以上规则)
var i = 0x10;
var j = 070;
var k = 0b11;
console.log(i, j, k);
//像“070”这种字符串,有些浏览器会当成八进制解析有的会当成十六进制解析
var l = "070";
l = parseInt(l);
console.log(l, typeof l);
// 可以在parseInt( , )中传递第二个参数,来制定数字的进制
var m = "070";
m = parseInt(m, 10);
console.log(m, typeof m);