7种类型
- 6种基本类型
- null
- undefined
- string
- number
- boolean
- symbol
- 1种对象
- object
数组和对象是引用类型
类型判断
- typrof 对于基本类型(除了null) 都显示基本类型
null : object,是个bug;
{} : object
[] : object
console.log : function - 获取一个变量都正确类型
Object.prototype.toString.call(xx) - boolean的false:null undefined 0 -0 “” NaN false
特殊要强调的
1). NaN 属于number类型 NaN!=NaN
2). 对于基本类型来说,如果使用字面量方式定义,那也这个变量也只是个字面量。只有在做类型转换的时候才会转换成基本类型
类型转换
let a = 1234 // a只是字面量
typeof(a) // a使用的时候转换为number类型
a.toString() // a使用的时候转为对象类型
- parseInt
parseInt('123') //123
parseInt('+123') //123
parseInt('-123') //123
parseInt('12.11') //12
parseInt('abc') //NaN
parseInt([1,2,3]) //1
parseInt("") //NaN
parseInt("AA" 16) //16的一次方*10+16的0次方*10 = 170
parseInt("10", 2) //2
parseInt("10", 8) //8
parseInt('10' ,10) //10
//含有前导的
parseInt('0xAA') //170
parseInt('010') //10 2进制不写基数默认成10进制
parseInt('010', 2) //2
parseInt('010', 8) //8
parseInt('010',10) //10
parseInt(null) //NaN
- parseFloat
parseFloat() //大致同parseInt,只是不舍弃小数点后的数字;
parseFloat('12.11元') //12.11
parseFloat('12.11.23') //12.11
parseFloat('aa') //NaN
parseFloat('0xAA') //0
parseFloat('0110') //110
parseFloat([1]) //1
parseFloat([2,3]) //2
parseFloat([]) //NaN
parseFloat(null) //NaN
- String 传入的所有东西都转化为字符串
String([123,123,123],233) //123,123,123,233
String 和 toString()
1、.toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined
.toString() 括号中的可以写一个数字,代表进制,对应进制字符串
2、网页代码String()可以将null和undefined转换为字符串,但是没法转进制字符串
- Number
Number('123') //123
Number('+123') //123
Number('-123') //123
Number('12.12') //12.12
Number('12.12.12') //NaN
Number(true) //1
Number('asd') //NaN
Number([]) //NaN
Number(" ") //0
Number([1]) //1
Number([1,2]) //NaN
Number(new Object()) //NaN
Number(null) //0
-
Boolean()
-
隐式转换
var x = "123" , y = 111
x+y //"123111"
x-y //12
x*y //123*111
x/y //x/y
x%y //12
x>y //true
x==y //false
"123a">y false
number类型值得关注的
let num = 1.8934;
保留几位小数
num.toFixed(2) // 1.89
取整
- 向上取整
Math.ceil(num) // 2
- 向下取整
Math.floor(num) // 1
- 四舍五入取整
Math.round(num) // 2
- 丢弃小数部分取整
parseInt(num) // 1