Undefined 、 Null 、 Boolean 、 Number 、 String 和 Symbol 。 Symbol (符号)是ECMAScript 6新增的。还有一种复 杂数据类型叫 Object (对象)。
Object 是一种无序名值对的集合。因为在ECMAScript中不能定义自己的数据类型,所有值都可以用上述7种数据类型之一来表示。
只有7种数据类型似乎不足以表示全部 数据。但ECMAScript的数据类型很灵活,一种数据类型可以当作多种 数据类型来使用。
因为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 是一个操作符而不 是函数,所以不需要参数(但可以使用参数)。
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 值。
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 是一个假值。因此,如果需要,可以用更简洁的方 式检测它。不过要记住,也有很多其他可能的值同样是假值。所以一 定要明确自己想检测的就是 undefined 这个字面值,而不仅仅是假值。
let message; // 这个变量被声明了,只是值为undefined
// age没有声明
if (message) {
// 这个块不会执行
}
if (!message) {
// 这个块会执行
}
if (age) {
// 这里会报错
}
暂时就到这里了。下一篇也是关于数据类型
原文:https://www.cnblogs.com/nuanyushengyan/p/14744953.html