JavaScript数据类型学习

JavaScript的七种数据类型


JavaScript的七种数据类型分别为:undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。在ES6中又引入了新的原始数据类型Symbol,标识独一无二的值,

const num = 10;
const str = "10";
const object = new Object();
const symbol = Symbol(); 
const boolean = true;

console.log(typeof num);     //number
console.log(typeof str);     //string 
console.log(typeof object);  //object
console.log(typeof symbol);  //symbol
console.log(typeof boolean); //boolean
console.log(typeof unde);    //undefined
console.log(typeof null);    //object

JavaScript类型检测


  • "typeof":使用方法如上代码
  • “instanceof”:用于判断一个变量是否某个对象的实例 
console.log([1,2] instanceof Array);   //true
function Person(){}
function Student(){}
Student.prototype = new Person();      
const tom = new Person();
console.log(tom instanceof Person);    //true
const jack = new Student();
console.log(jack instanceof Student);  //true
console.log(jack instanceof Person);   //true
  • "Object.prototype.toString"
    console.log(Object.prototype.toString.apply([1,2]));        //[object Array]    
    console.log(Object.prototype.toString.apply(function(){})); //[object Function]
    console.log(Object.prototype.toString.apply(null));         //[object Null]
    console.log(Object.prototype.toString.apply(undefined));    //[object Undefined]

     

JavaScript数据类型的比较


"===" 绝对等于号:首先判断等号两边的数据类型是否相同,如果不通直接返回false,如果相同再判断两边的内容是否相当

console.log(null === null);                 //true
console.log(undefined === undefined);       //true
//数据类型相同,但是指向不同
console.log(new Object() === new Object()); //false
//NaN是比较特殊,跟任何数据相比都是不等于
console.log(NaN === NaN);                   //false
console.log(+0 === -0);                     //true

“==”不严格等于号:类型相同时同“===”,不同时会自己进行隐式转换

//number-string
console.log(1 == "1.0");                  //true
//number-boolean
console.log(0 == false);                  //true
console.log(1 == true);                   //true
//对象转为基本数据类型
console.log(new Object("hi") == "hi");    //true
console.log(new Object(5) == 5);          //true
//null - undefind 
console.log(null == undefined);           //true

上面两种方法都有自己的缺点,前者的NaN不等于自身,以及+0等于-0,后者会自动转换数据类型。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。

ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致

console.log(Object.is('str','str')); //true
console.log(Object.is({},{}));       //false

不同之处只有两个:一是+0不等于-0,二是NaN等于自身。

console.log(+0 === -0);           //true
console.log(NaN === NaN);         //false
console.log(Object.is(+0,-0));    //false
console.log(Object.is(NaN,NaN));  //true

可以利用隐式转换规则进行一些数据类型的转换

console.log(typeof (10+""));  //string
console.log(typeof ("10"-0)); //number

JavaScript包装对象


基本数据类型string,number,boolean可以转化为原始数据类型,比如

 const str = 'string';
 console.log(str.length);  //6
 str.t = 10;
 console.log(str.t);       //undefined

当str尝试作为对象去调用方法时,javascript会将它转化为对应的包装类型,调用完成后,会再进行销毁,所以再次调用它赋值的属性会是undefind

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值