你不知道的js-中-第一章-类型

这一章到底在说什么?

JavaScript中的类型有哪几种,及其它的一些用法。

作者具体说了什么,怎么说的?

什么是类型:
对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值。

1.2 内置类型

JavaScript有七种内置类型:

  1. 空值(null)
  2. 未定义(undefined)
  3. 布尔值(boolean)
  4. 数字(number)
  5. 字符串(string)
  6. 对象(object)
  7. 符号(symbol, ES6中新增)
typeof null // object
typeof undefined // undefined
typeof true  // boolean
typeof 42  // number
typeof “42” // string
typeof {life: 42} // object

1.3: 值和类型

JavaScript中的变量是没有类型,只有值才有。变量可以随时持有任何类型的值。
皇额角度来理解,js不做“类型强制”;也就是说,语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以现在被赋予字符串类型,随后又被赋值为数字类型值。

1.3.1: undefined和undeclared
已在作用域中声明但还没有赋值的变量,是undefined的,相反,还没有在作用域中声明过的变量,是undeclared 的。

Var a;
a // undefined
b // ReferencerError: b is not undefined

1.3.2 typeof Undeclared

typeof有自己的安全防范机制。

// 如果debug没有被声明

// 这样会抛出错误
if (debug) {
    console.log(“debug is starting”)
}

// 这样是安全的
if (typeof debug !== “undefined”) {
    console.log(“debug is starting”)
}

本章小结: 小结

  1. JavaScript有七种内置类型:null, undefined, boolean, number, string, object和symbol,可以使用typeof运算符来查看具体类型
  2. 变量没有类型,但它们持有的值有类型。类型定义了值的行为特征。
  3. 很多开发人员将undefined和undeclared混为一谈,但在JavaScript中它们是两码事。undefined是值的一种,undeclared则表示变量还没有被声明过。
  4. 遗憾的是,JavaScript却将它们混为一谈,当我试图访问undeclared 变量时这样报错:ReferenceError: a is not defined,并且typeof对undefined和undeclared变量都返回”undefined”
  5. 然而,通过typeof的安全防范机制(组织报错)来检查undeclared变量,有时是个不错的办法。

你可能感兴趣的:(你不知道的js-中-第一章-类型)