首页 > 编程语言 > 详细

JavaScript高级程序设计——数据类型

时间:2021-05-08 16:35:54      阅读:15      评论:0      收藏:0      [点我收藏+]

数据类型

ECMAScript有6种简单数据类型(也称为原始类型):

Undefined 、 Null 、 Boolean 、 Number 、 String 和 Symbol 。 Symbol (符号)是ECMAScript 6新增的。还有一种复 杂数据类型叫 Object (对象)。

Object 是一种无序名值对的集合。因为在ECMAScript中不能定义自己的数据类型,所有值都可以用上述7种数据类型之一来表示。

只有7种数据类型似乎不足以表示全部 数据。但ECMAScript的数据类型很灵活,一种数据类型可以当作多种 数据类型来使用。

 

 

typeof操作符

因为ECMAScript的类型系统是松散的,所以需要一种手段来确定 任意变量的数据类型。 typeof 操作符就是为此而生的。对一个值使 用 typeof 操作符会返回下列字符串之一:

1、"undefined" 表示值未定义;

2、"boolean" 表示值为布尔值;

3、"string" 表示值为字符串;

4、"number" 表示值为数值;

5、"object" 表示值为对象(而不是函数)或 null ;

6、"function" 表示值为函数;

7、"symbol" 表示值为符号。

 

下面是使用 typeof 操作符的例子:

let message = "some string";
console.log(typeof message); // "string"
console.log(typeof(message)); // "string"
console.log(typeof 95); // "number

在这个例子中,我们把一个变量( message )和一个数值字面 量传给了 typeof 操作符。注意,因为 typeof 是一个操作符而不 是函数,所以不需要参数(但可以使用参数)。

注意 typeof 在某些情况下返回的结果可能会让人费解,但技术 上讲还是正确的。比如,调用 typeof null 返回的 是 "object" 。这是因为特殊值 null 被认为是一个对空对象的引 用。

注意 严格来讲,函数在ECMAScript中被认为是对象,并不代表一 种数据类型。可是,函数也有自己特殊的属性。为此,就有必要通 过 typeof 操作符来区分函数和其他对象。

 

(1)Undefined 类型

Undefined 类型只有一个值,就是特殊值 undefined 。当使 用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予 了 undefined 值:

let message;
console.log(message == undefined); // true

在这个例子中,变量 message 在声明的时候并未初始化。而在 比较它和 undefined 的字面值时,两者是相等的。这个例子等同于 如下示例:

let message = undefined;
console.log(message == undefined); // true

这里,变量 message 显式地以 undefined 来初始化。但这是 不必要的,因为默认情况下,任何未经初始化的变量都会取得 undefined 值。

 

注意 :一般来说,永远不用显式地给某个变量设置 undefined 值。字面值 undefined 主要用于比较,而且在ECMA-262第3版 之前是不存在的。增加这个特殊值的目的就是为了正式明确空对象 指针( null )和未初始化变量的区别。

注意,包含 undefined 值的变量跟未定义变量是有区别的。请 看下面的例子:

 

let message; // 这个变量被声明了,只是值为
undefined
// 确保没有声明过这个变量
// let age
console.log(message); // "undefined"
console.log(age); // 报错

 

 

在上面的例子中,第一个 console.log 会指出变量 message 的值,即 "undefined" 。而第二个 console.log 要输出一个未 声明的变量 age 的值,因此会导致报错。对未声明的变量,只能执 行一个有用的操作,就是对它调用 typeof 。(对未声明的变量调 用 delete 也不会报错,但这个操作没什么用,实际上在严格模式下 会抛出错误。)
在对未初始化的变量调用 typeof 时,返回的结果 是 "undefined" ,但对未声明的变量调用它时,返回的结果还 是 "undefined" ,这就有点让人看不懂了。比如下面的例子:

let message; // 这个变量被声明了,只是值为undefined
// make sure this variable isn‘t declared
// let age
console.log(typeof message); // "undefined"
console.log(typeof age); // "undefined"

无论是声明还是未声明, typeof 返回的都是字符 串 "undefined" 。逻辑上讲这是对的,因为虽然严格来讲这两个变 量存在根本性差异,但它对任何一个变量都不可能执行什么真正的操作。

 

注意 即使未初始化的变量会被自动赋予 undefined 值,但我们 仍然建议在声明变量的同时进行初始化。这样,当 typeof 返 回 "undefined" 时,你就会知道那是因为给定的变量尚未声 明,而不是声明了但未初始化。

undefined 是一个假值。因此,如果需要,可以用更简洁的方 式检测它。不过要记住,也有很多其他可能的值同样是假值。所以一 定要明确自己想检测的就是 undefined 这个字面值,而不仅仅是假值。

 

let message; // 这个变量被声明了,只是值为undefined

// age没有声明

if (message) {

// 这个块不会执行

}

if (!message) {

// 这个块会执行

}

if (age) {

// 这里会报错

}

 

 

 

 

暂时就到这里了。下一篇也是关于数据类型

JavaScript高级程序设计——数据类型

原文:https://www.cnblogs.com/nuanyushengyan/p/14744953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!