JS的数据类型及转换(还是基础的东西)

  朋友说我这是再自娱自乐,我只想说,你说的对😄😄😄😄!其实也不然,这算是我对自己的基础的一次彻底性的重新梳理以及闲的无聊,找点显得比较有意义的事情做罢了。

  回归正题,在JS中,数据类型有哪些呢?看看下图

  

  字符串、数字、布尔类型就不细说了,这些大家都懂,说一些大家关注度比较少的东西......

  NULL和Undefined:

    NULL和Undefined一样都只有一个值,并且都是他们本身,但是有一点特别的有意思,那就是:

      

    在W3C里事这样解释这两个东西的:

      值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

    虽然视为相等,但是含义却不同,undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象。意思就是,一个用于简单数据类型,一个用于复杂数据类型。

    有一种方法很容易区分他们:typeof()。

      

  接下来说一说类型转换

  JS的数据类型事动态的,所以说,当声明一个变量之后,这个变量的数据类型是什么取决于它被赋予的值。

  var abc ;

  这是声明变量了,然后:

    abc = asdfgh;这就是字符串类型的;

    abc = 123;这就是数字类型的,并且是同一个变量,而且字符串类型已经的值已经被覆盖了;

    这就是简单的解释了js的数据类型是动态的。

  当然,还有很多方法,例如:.toString()   parseInt()   parseFloat()......这些方法,这都是直接的数据类型的转换方法。

  当然,其实这些都不怎么好用,最喜欢的还是一些比较直接的方法:例如什么-1,例如什么+个字符串类型的变量,自然而然的就是字符串类型了。这也就是所谓的隐式转换。

  在复杂类型中,从NULL衍生到Object,这已经定义了所有的变量都是对象。字符串类型变量是对象,数字类型的变量也是对象,布尔类型的,null,undefined的全都是对象。上面图里面我没有写上数组Array,是因为我相当都的说一下。

  在Object中,通过原型链,我们可以得到Function、String、Number、Array这些对象。说到这里,我想说一个搞笑的事情,再一次我的面试中,我面试官问我知不知道数据类型什么的,然后我说我知道,人家就问我typeof一个数组,得到结果是什么,当时我想都没想就脱口而出是Array,并且还很是得意。人家还问我确定不,我当时很坚决的说是。面试的结果,可想而知,我晚上想到这个的时候,真心是哭笑不得,真心觉得都快丢人丢死了。自那以后我深刻的记住了,数组的typeof是object,虽然他的原型时候Array。原型和数据类型是不同的。

posted @ 2017-12-03 10:53  起帅帅  阅读(149)  评论(0编辑  收藏  举报