这是我参与「第四届青训营 」笔记创作活动的第2天
基本概念:ECMAScript规范定义了6种“简单”数据类型,通常也称为原始类型:Undefined、Null、Boolean、Number、String、Symbol。其中Symbol类型是ECMAScript 6 新增的。还有一种复制数据类型,即对象Object。
typeof():ECMAScript常常被称为一种灵活的脚本语言,为什么灵活?因为JavaScript的一种数据类型可以当作多种数据类型来用。正因为它的数据类型灵活,所以我们需要一种手段来查看某个变量的数据类型,即typeof()方法,例如:
const num1 = 123;
const string1 = "123";
console.log(typeof(num1)
console.log(typeof(string1)
//number
//string
使用typeof()方法得到的返回值包括"undefined"、"boolean"、"string"、"number"、"object"、"function"、"symbol"
(六种数据类型的解释在网上都有详尽的资料,我仅在笔记中记录平常容易忽视的一些要点)
1.Undefined:在使用var 或 let 声明了变量但没有初始化时,就相当于默认给这个变量赋予了Undefined
let demo1;
console.log(demo1);
//Undefined
let demo2 = Undefined;
console.log(demo2);
//Undefined
上面这两个例子是等同的
2.Null:先看一个例子
console.log(null == undefined);
//true
为什么会出现这样的结果?这是因为在JavaScript的发展史上,先出现的null,后出现的undefined,而后者是由前者派生而来的。
3.Boolean:Boolean值只有两个字面量:true和false。在我们想将其他数值转换为布尔值时,可以使用Boolean()方法。在我们实战中经常会与布尔值打交道,例如在if语句中用到的判断条件,这些语句会自动将其他类型数据转换为布尔值从而判断大小或相等。
4.Number:在这里我想提一个书中经常会看到的例子
let a = 0.1;
let b = 0.2;
if (a + b == 0.3) {
console.log("a+b=0.3"
} else {
console.log("!=0.3"
}
//"!=0.3"
为什么会出现这种情况呢?这是因为ECMAScript中是数值使用了IEEE 754 数值,因此会出现很意外的错误。 当然,Number值肯定也有大小范围,这是由于计算机内存的限制,数字不可能无限大,ECMAScript中最大的数值可以用Number.MAX_VALUE表示,最小的数值可以用Number.MIN_VALUE表示。在我们刷算法题时,想先定义一个很大的数,可以let num = Number.MAX_VALUE来优雅的表示。 Number还有一个特殊的数值叫NaN,意为not a number,表示的是本来应当返回数值,但是却失败了,例如计算+0,-0,/0时。
(今天的笔记先记到这里,明天继续更剩下的数据类型及他们的方法,掘金的富文本编辑器我按一次换行没有效果,所以有些句子就连在一起了555)