JavaScript typeof运算符和数据类型

// js有6种数据类型:Undefined、Null、Boolean、String、Number、Object

//(01)typeof  
console.log(typeof undefined); //undefined
console.log(typeof null); //object   :特殊1
console.log(typeof true); //boolean
console.log(typeof ''); //string
console.log(typeof 0); //number
console.log(typeof {}); //object
console.log(typeof function () { }); //function    :特殊2

//(02)Undefined 用于没有初始化的变量赋值undefined

//(03)Null undefined派生于null,用于表示一个空引用(指针),undefined == null =>true

//(04)Boolean 值为 true和false ,JavaScript区分大小写,所以True等不是Boolean的值
//类型转换
//Boolean() ,将任何类型转换为布尔类型
var hello = Boolean("hello"); //调用方法(不是构造函数)显示类型转换
console.log(hello); //true
if ('hello')
{ //隐式类型转换
    console.log('隐式类型转换成功!');
}

//(05)Number
//声明
var num = 10; //10进制
var num = 077; //8进制
var num = 0xa; //16进制 ,0=>零
console.log(num); //10

//浮点类型,占用内存比整数类型打2倍
var box = 12.0;
console.log(box); //自动转换为:12

//e表示法(科学计数法)
var box = 1.23e3;
console.log(box); // 小数点向后移动n位:1230 
var box = 1.23e-3;
console.log(box); //向前移动n位:0.00123;

// 浮点类型精确度为17位,运算的话,有时会不精准
console.log(0.1 + 0.2); //0.30000000000000004

//NaN ,not a number
var box = 0 / 0;
console.log(box); //0不能作除数:NaN
console.log(box + 1); //任何与NaN运算的结果都是NaN :NaN
console.log(NaN + 1); //任何与NaN运算的结果都是NaN :NaN
console.log(isNaN(box)); //true
console.log(isNaN({})); //隐式调用对象的toString方法 :true

//类型转换
//Number(),将任何类型转化为数字
console.log(Number(box)); //NaN
console.log(Number(true)); //1
//parseInt()
console.log(parseInt('0xa'));//10  
console.log(parseInt('a', 16));//10
console.log(parseInt('70', 8));//56
//parsenFloat() 同上

//(06)String :字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改
//变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的
//字符串填充该变量
//toString()
var box = 10;
console.log(box.toString(2));//可以进制转换:1010
//类型转换
//String(),将任何类型转换为字符串

//(07)Object :
//类型转换
//Object(),将任何类型转换为对象;

//最后总结: 类型转换貌似就是调用的构造函数来创建对应类型的对象,网上说的和构造函数有区别的说法应该是不对的!
posted @ 2017-02-22 17:15  爱笑的3  阅读(215)  评论(0编辑  收藏  举报