你不知道的js-中-第一章-类型
2020-01-10 本文已影响0人
本一和他的朋友们
这一章到底在说什么?
JavaScript中的类型有哪几种,及其它的一些用法。
作者具体说了什么,怎么说的?
什么是类型:
对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值。
1.2 内置类型
JavaScript有七种内置类型:
- 空值(null)
- 未定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(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”)
}
本章小结: 小结
- JavaScript有七种内置类型:null, undefined, boolean, number, string, object和symbol,可以使用typeof运算符来查看具体类型
- 变量没有类型,但它们持有的值有类型。类型定义了值的行为特征。
- 很多开发人员将undefined和undeclared混为一谈,但在JavaScript中它们是两码事。undefined是值的一种,undeclared则表示变量还没有被声明过。
- 遗憾的是,JavaScript却将它们混为一谈,当我试图访问undeclared 变量时这样报错:ReferenceError: a is not defined,并且typeof对undefined和undeclared变量都返回”undefined”
- 然而,通过typeof的安全防范机制(组织报错)来检查undeclared变量,有时是个不错的办法。