学习JS的心路历程-类型

时间:2023-01-05 19:23:26

前言

之前学JS时候都是靠着谷狗一路跌跌撞撞的学过来,从来没有去翻过MDN的文件,导致留了许多技术债给自己。

最近有幸遇到一位前辈并开始从头学JS,前辈表示学程序不看文件是想作死自己?于是我的第一份功课就是读完MDN的JS入门文件,在这过程中我也笔记了一些我认为蛮重要的地方,希望藉由这三十天的过程中能加深自己印象并分享给各位。

如果文章中有任何的错误或引用没有附上出处也欢迎各位指教。

数据类型

JavaScript中,总共有七种类型:

String

Number

Boolean

Null

Undefined

Symbol(于ECMAScript 6新定义)

Object

其中又可以分成以下两大类别:

原始类型(Primitive type)

物件类型

除了Object其余都是原始类型

原始类型(Primitive type)

JS中最基本的单位,是一个值,因为不是物件所以没有任何属性。

不可变异(immutable)

所有基本类型都是不可改变的,在这里要注意的是别把变数和类型搞混了。

我们可以赋予变数一个新的值,不论是字串或是数字类型,但是却无法更改现有值。

物件类型

JS中除了原始类型以外的一切都是物件

物件这个类型代表了一种复合值(computed value),可以对他设定一些特性(properties),它们每一个都持有了可以是任何类型的值。

这样说听请来有点令人不知所措,来看个例子吧:

var obj ={

a:'hola',

b:42,

c:true

}

obj.a;// 'hola'

obj.b;//42

obj.c;//true

辨别类型:

用typeof可以判断上述中除了null的值

var myStr = 'hello world';

typeof myStr;//“string”

typeof 'hello world';//“string”

var myNum = 42;

typeof myNum;//“number”

typeof 42;//“number”

var myBol = true;

typeof myBol;//“boolean”

typeof true;//“boolean”

var myUndefined;

typeof myUndefined;//“undefined”

typeof undefined;//“undefined”

typeof null;//“object”

var myObj = {

a:'hola',

}

typeof myObj;//“object”

使用typeof(null)===“object”是早期JS设计时候的Bug。

JS会让这bug存在这么久(大概快二十年)原因在于很多网站仰赖这个bug如果修正可能会产生更多的bug。

参考:

MDN Primitive

JavaScript的数据类型与数据结构

你所不知道的JS导读、类型与文法