码迷,mamicode.com
首页 > Web开发 > 详细

关于JS的数据类型的一些见解

时间:2015-08-14 21:05:16      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

关于js里的数据类型这块,小弟说一下个人对它的一些见解,如果有错误希望大家一起帮我纠正

js中的数据类型可以归类两类,

简单数据类型:string,number,boolean,null,undefined

复杂数据类型:object

其实严格说:null是object类型

 

 
        alert(10 + ":" + typeof (10));//10:number
        alert("abc:" + typeof ("abc"));//abc:string
        alert("true:" + typeof (true));//true:boolean
        alert("null:" + typeof (null));// null:object
        alert("undefined:" + typeof (undefined));//undefined:undefined

 

1 各数据类型的默认空值:

string:null,

number:NaN

boolean:false

null:null

undefined:undefined

object:null

 

 var obj_str = null;//string的默认空对象
 var obj_num=NaN;//number的默认空对象
 var obj_bool = false;//boolean 的默认空对象

 

但是我们一般都是直接定义:

var obj_str, obj_num, obj_bool;

我们这样声明完了,虽然明白自己想要给他们赋予什么类型,可是为难了js了,js识别不出是什么类型的数据变量,所以 js索性丢一个undefined的默认值给他们。

所以,对于undefined我们可以理解成是:没有类型,也没有值的,说白一点儿就是在内存中根本就不给它分配位置,

undefined 也可以理解成对所有未知,不存在类型和值的对象的总称。

 

2.undefined和null的的区别:

我们先看一段代码:

  undefined == null ? alert(true) : alert(false);
    //输出:true
  undefined === null ? alert(true) : alert(false);
    //输出:false    

他们两个本身不一样, null就相当于 一个空箱子,而undefined 就相当于什么也没有

如果转化为同一个类型(我喜欢理解成忽略类型),来比较值的话,undefined和null的值是相等的,

undefined 是空对象,null是空值。

就相当于现在去掉类型,就相当于把箱子去掉,然后 他们两个都是什么也没有了,

咱们再看另外一段代码:

 undefined = 1 ? alert(true) : alert(false); 

运行了这行代码,会出现什么结果?

输出结果:true

如果你感觉有些吃惊的话,那你要认真接着看了,

在说上面为什么会输出true之前,我们再看一段代码:

 if (undefined = 1) {
            alert(true);
        }
        else {
            alert(false);
        }

让大家失望了,我只是换了一个写法,这样能看得更明显一些:

输出true是因为 1 转化为boolean时为true,

但是,我想说的是:为什么 undefined=1 不报错呢?

原因是:undefined 虽然和 null他们归为一类,但是undefined可以赋值,

这里我参入一些我个人的看法:

undefined是js内置的空对象,这样,在给它赋值就显得理所当然了,

既然这样,null本身是一个空值,在内存中占据一格的值,那么我们如果给null赋值的话,会不会报错呢?我猜想会报错

带着这种猜想,我运行了下面的代码:

   null = 1 ? alert(true) : alert(false); //报错 

报错!

这也正证实了我们的猜想。

这些是我对js数据类型的一些浅显认知,望多多指教

 

关于JS的数据类型的一些见解

标签:

原文地址:http://www.cnblogs.com/qiumohanyu/p/4729685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!