逆战班,前段学习
判断数据类型
6种基本数据类型
null 空值,表示非对象
undefined 未定义的值,表示未赋值的初始值
number 数字,数字运算符
string 字符串,表示信息流
boolean 布尔值,逻辑运算的值
object 对象,表示复合结构的数据集
可以使用typeof运算符分别检测常用值的类型,
var type=“aaa”
console.log(typeof type) 返回string
var type=1
console.log(typeof type) 返回 number
var type=true
console.log(typeof type) 返回boolean
var type=null
console.log(typeof type) 返回object
var type=undefined
console.log(typeof type) 返回 undefined
var type=function(){}
console.log(typeof type) 返回 function
强制转换
1、String(数据);强制转换为字符串
var num=10
var a=String(num);
var num=10
console.log(typeof String( num))
2、数据.toString();强制转换为字符串
var num=10
console.log(typeof num.toString())
var num=10
console.log(typeof num.toString());
.String(数据)和数据.toString()的区别
1.在数据.toString()中 null 和 undefined不能转换而在.String(数据)中可以。
var num=null
console.log(typeof num.toString())
var num=undefined
console.log(typeof num.toString())
2.tostring可以将任何数字转换为任意进制,进制必须大于等于2并且小于等于36也就是最小是2进制,最大是36进制,因为数字字母就36个
下图将10和255分别转换为2进制和16进制
var num=10
console.log(num.toString(2));
num=255
console.log(num.toString(16));
3、toFixed(小数点后几位) 将数值转换为字符串,并且按照小数点四舍五入,但是有精度误差
任何数据都需要转换为二进制,但是原生js二进制小数转换以后恢复到数值时,是有误差的
var num=10.257
console.log(num.toFixed(2));
4、Number(数据) 强转数值
var str=“你好” 纯字符 //转换为NaN 非数值 类型是number
var str=“10” 纯数字字符 //转换为数字
var str=“1a” 部分字母部分数字 //转换为NaN 非数值 类型是number
var str=true // 1
var str=false //0
var str=undefind // 转换为NaN 非数值 类型是number
var str=null //0
var str="你好"
console.log(Number(str));
var str="10"
console.log(Number(str));
var str="1a"
console.log(Number(str));
var str=true
console.log(Number(str));
var str=false
console.log(Number(str));
var str=undefined
console.log(Number(str));
var str=null
console.log(Number(str));
5、parseInt(数据) 强转为整数
var str=“你好” 纯字符 转换为NaN 非数值 类型是number
var str=“10.1” 纯数字字符 10 转换为整型
var str=“10.1a” 部分数值部分字符 10 转换为整型
var str=“a10.1” 部分数值部分字符 转换为NaN 非数值 类型是number
通过parseInt转换数值可以从开始转换到字符前为止变成数值,如果第一位是字符,返回NaN
parseInt(数据,值)可以把任意进制数转换为10进制
var str=1010
parseInt(str,2)
输出得10
var str=1010
console.log(parseInt(str,2));
var str=true 转换为NaN 非数值 类型是number
var str=false转换为NaN 非数值 类型是number
var str=undefind转换为NaN 非数值 类型是number
var str=null转换为NaN 非数值 类型是number
6、parseFloat(); 强转为小数
它能识别出第一个出现的小数点,而第2个小数点为非法。
var str="10.23.1"
console.log(parseFloat(str));
7、Boolean(数据); 转换为布尔值
“” 0 false,undefined,null,NaN 转换为布尔值都会变成false,除此之外转换都是true
var str=false;
console.log(Boolean(str))
var str="";
console.log(Boolean(str))
var str=0;
console.log(Boolean(str))
var str=undefined;
console.log(Boolean(str))
var str=null;
console.log(Boolean(str))
var str=NaN;
console.log(Boolean(str))
隐式转换
var a=“1”;var b=3;
console.log(b+a);
console.log(b-a);
如果正常来说两个不同类型的数据相加就会报错
这种情况只可能发生再弱类型语句中,类型不相同,弱类型语言会自动将数据转换为对应的类型
当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算,这是隐式转换
var a=“a”;var b=3;
console.log(a+b);
输出得a3
这里将b隐式转换成字符串,并且首尾相连
console.log(a-b);
输出得NaN
减法会隐式转换将a和b都转换为数值 NaN