【Day12】原始型别及物件型别

JavaScript 中型别主要分为原始型别和物件型别两种

原始型别

原始型别中包含七种型别,

而这些型别有各自的方法,

这些方法可以藉由包裹物件来查看,

其中只有 undefinednull 没有包裹物件,

每个型别所对应的包裹物件如下表所示:

型别 包裹物件
字串(String) new String()
数字(Numnber) new Number()
布林(Boolean) new Boolean()
未定义(Undefined) -
空(Null) -
整数数值(Bigint) BigInt()
(Symbol) Symbol()

范例:

var a, b, c;
console.log(typeof a);  // undefined
a = 0;
b = 'weiwei';
c = true;
console.log(typeof a);  // number
console.log(typeof b);  // string
console.log(typeof c);  // boolean

从范例可以得知变数在宣告後且尚未赋予值前型别为 undefined

随後赋予不同型别的值,因此使用 typeof 分别会显示不同的结果

var b = null;
console.log(typeof b);  // object

那麽为何 null 的型别为 object 而不是 null 呢?

因为这是 JavaScript 中的一个错误,而现在也不能修正这个错误,

原因是有许多网站利用这种错误来完成的,

一旦修正许多网站都会出错,所以将错误保留至今

console.log(typeof c);  // undefined

我们看到变数 c 没有被定义为何使用 typeof 时不会出错呢?

因为这是 typeof 的针对未定义变数的保护措施,

因此使用 typeof 对未定义变数取型别时,会显示 undefined

var a = 'weiwei';
console.log(a.toUpperCase());  // WEIWEI
console.log(a.length);  // 5

// 使用包裹物件查寻 a 有哪些方法可以使用
var b = new String(a);
console.log(b);
console.log(typeof b);  // object

当我们要查看一个变数有哪些方法使用时,可以使用包裹物件来寻找


我们点开 String 再点开 Prototype 後,

可以看到里面有许多方法,而范例中使用的 toUpperCase()length 也包含在内,

当我们使用包裹物件宣告变数时,该变数的型别为物件型别

物件型别

原始型别以外的型别都是物件型别,EX:物件、阵列、函式...

范例:

var a = {};
var b = [];
var c = function(){};

console.log(typeof a);  // object
console.log(typeof b);  // object
console.log(typeof c);  // function

我们会看见 c 的型别为 function

function 为物件的子型别,

我们可以使用 instanceof 来确认函式是否为物件的子型别

var c = function(){};

console.log(typeof c);  // function

console.log(c instanceof Object);  // true

结果为 true,因此函式也是物件的一种

以上就是今天的内容,我们明天见!!


<<:  [自然语言处理基础] 文本预处理(I):断开文本的锁练

>>:  Day12 测试写起乃-mock、stub

Day 19 Knative Serving DNS 测试

Knative v0.20.0 requires a Kubernetes cluster v1.1...

Day.22 SQL应用 - 表与表之间的连结 (JOIN)

今天来介绍关连式资料库查询方便的地方-JOIN 多表之间的连结(JOIN 用法) 用以下3个表的纪...

Day01: 为什麽我想要学 TypeScript

前端工程师说,我去交友网站找女朋友去了。 朋友问:找到了麽? 工程师说:找到了他们页面的一个 bu...

Day 24:让iOS也吃到SQL Delight

Keyword:SQLDelight,Native Driver 到24日,在iOS上呈现DB资料 ...

IOS、Python自学心得30天 Day-4 TensorFlow 资料处理

前言: 到了要开始处理资料的部分,因为影像资料会有档案太大或是大小不一的问题,所以都要先预设成固定的...