目录
1.typeof 操作符
"undefined" 表示值未定义;
"boolean" 表示值为布尔值;
"string" 表示值为字符串;
"number" 表示值为数值;
"object" 表示值为对象(而不是函数)或 null ;
"function" 表示值为函数;
"symbol" 表示值为符号。
2.Undefined 类型
当使用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予了 undefined 值
在对未初始化的变量调用 typeof 时,返回的结果是 "undefined" ,但对未声明的变量调用它时,返回的结果还是 "undefined"
3.Null 类型
null 值表示一个空对象指针,这也是给typeof 传一个 null 会返回 "object" 的原因
console.log(null == undefined); // true(undefined 值是由 null 值派生而来的)
4.Boolean 类型
两个字面值: true 和 false 。这两个布尔值不同于数值,因此 true 不等于 1, false 不等于 0
5.Number 类型
八进制字面量,第一个数字必须是零(0),然后是相应的八进制数字(数值 0~7);
十六进制字面量,必须让真正的数值前缀 0x (区分大小写),然后是十六进制数字(0~9 以及 A~F)。十六进制数字中的字母大小写均可。
有 3 个函数可以将非数值转换为数值: Number() 、 parseInt() 和 parseFloat() 。 Number() 是转型函数,可用于任何数据类型。后两个函数主要用于将字符串转换为数值。对于同样的参数,这 3 个函数执行的操作也不同。
parseInt() 函数更专注于字符串是否包含数值模式。字符串最前面的空格会被忽略,从第一个非空格字符开始转换。如果第一个字符不是数值字符、加号或减号, parseInt() 立即返回 NaN 。这意味着空字符串也会返回 NaN (这一点跟 Number() 不一样,它返回 0)。如果第一个字符是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。比如,
"1234blue" 会被转换为 1234,因为 "blue" 会被完全忽略。类似地, "22.5" 会被转换为 22,因为小数点不是有效的整数字符。
不同的数值格式很容易混淆,因此 parseInt() 也接收第二个参数,用于指定底数(进制数)。如
果知道要解析的值是十六进制,那么可以传入 16 作为第二个参数,以便正确解析:
let num = parseInt("0xAF", 16); // 175
6.String 类型
String (字符串)数据类型表示零或多个 16 位 Unicode 字符序列。字符串可以使用双引(")、单引号(')或反引号(`)标示。
7.Symbol 类型
Symbol (符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。
8.Object 类型
ECMAScript 中的对象其实就是一组数据和功能的集合。对象通过 new 操作符后跟对象类型的名称
来创建。开发者可以通过创建 Object 类型的实例来创建自己的对象,然后再给对象添加属性和方法:let o = new Object();
每个 Object 实例都有如下属性和方法。
constructor :用于创建当前对象的函数。在前面的例子中,这个属性的值就是 Object()
函数。
hasOwnProperty(propertyName) :用于判断当前对象实例(不是原型)上是否存在给定的属
性。要检查的属性名必须是字符串(如 o.hasOwnProperty("name") )或符号。
isPrototypeOf(object) :用于判断当前对象是否为另一个对象的原型。
propertyIsEnumerable(propertyName) :用于判断给定的属性是否可以使用 for-in 语句枚举。与 hasOwnProperty() 一样,属性名必须是字符串。
toLocaleString() :返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
toString() :返回对象的字符串表示。
valueOf() :返回对象对应的字符串、数值或布尔值表示。通常与 toString() 的返回值相同。