zoukankan      html  css  js  c++  java
  • 关于JS的数据类型的一些见解

    关于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数据类型的一些浅显认知,望多多指教

  • 相关阅读:
    iphone inline video fragments
    input text focus去掉默认光影
    ios html5 audio 不能自动播放
    跑马灯实现新闻滚动 鼠标放上去停 移开继续滚动
    转:理解WinCE bulid过程
    C语言sendto()函数:经socket传送数据
    WaitForSingleObject用法介绍
    CoInitializeEx()
    转:select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
    setsocketopt()
  • 原文地址:https://www.cnblogs.com/qiumohanyu/p/4729685.html
Copyright © 2011-2022 走看看