数据类型的区分
typeof()/typeof 用来区分每一种数据是什么类型的(number,string,boolean,undefined,object,function)
eg:console.log(typeof(num));
——number
object:1.空对象2.数组3.null。泛泛的引用值都是object
eg:console.log(typeof(undefined))
——undefined
console.log(typeof(function))
——function
★console.log(typeof(typeof(undefined)))
——string
★(typeof(typeof(number/string/boolean/undefined/object/function)))——string
★(typeof(typeof(NaN)))——number
★(typeof(typeof(null))——object
任何一个变量未经声明就使用会报错,但放typeof里不会
类型转换
一、显示类型转换
1.number(min)把括号里的值转换为数字。
eg:number("123")
——123字符串转数字
number(true)
——1
number(false)
——0
number(null)
——0
number(undefined)
——NAN 。凡是应该转换成数字的但转换不了的都是NAN,eg:字母。
2.parseInt(string,radix基底)转成整数,有小数点就去掉小数点后面的数。
eg:parseInt(123.3)
——123
parseInt(123abc)
——123
★parseInt(true/false/null/undefined)
——NaN
var demo = "10";
var num = parseInt(demo,16)
num——16
以16进制为基底把demo转为10进制;把10当成16进制
3.parseFloat(string)转为浮点型的数,从数字位开始看,截止到点以外非数字位截止
parseFloat(100.2abc)
——100.2
4.toString(radix)转为目标进制;(也可转为字符串)。除了undefined、null不能用,会报错
var demo = 123;
num = demo.toString()
5.string(mix)致力于把括号里的东西转为字符串
6.Boolean()把里面的东西转为布尔值(除了undefined,null,NaN," ",0,false为false;剩下的的都是true)
二、隐式类型转换
- isNaN()内部会先把括号里的值放number()转换,然后和NaN对比,相等为true
- “++”/"–","+"/"-"(一元正负);先转换为number再参与运算
var a = "123"; a ++;
——124 - “+” 当+号两侧有一个为字符串的话,就会调用string,都变成字符串
a = "a" + 1
——a1 - “-”,"*","/","%", 都是先转换为number再运算
- “&&”,"||","!", 调用boolean转换
- “>”,"<",">=","<=", 转为number值
- “==”,"!=",转为number值
★undefined 等于null;{} 不等于{}引用值比的是地址,地址相同才为true
三、不发生类型转换
- "==="绝对等于,两侧长得一样才相等
- "!=="绝对不等于
NaN === NaN错误,NaN不等于任何,包括自身
to.Fixed(“保留几位有效数字并四舍五入”)