第一章 类型

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

内置类型

javascript 有七种内置类型:

  • 空值(null)
  • 未定义(undefined)
  • 布尔值(boolean)
  • 数字(number)
  • 字符串(string)
  • 对象(object)
  • 符号(symbol ES6新增)

除对象之外,其他统称为“基本类型”

  1. typeof undefined === "undefined"
  2. 返回的类型是字符串值。也就是需要加上""才是正确的

需要注意的情况
1.null

  1. typeof null === "object" //true

=>使用复合条件来检测null值的类型

  1. var a = null
  2. (!a && typeof a === "object") //true
  3. 注:!a是为了确认anull 还是 object(因为两者的值都返回object)

2.function

  1. typeof console.log //"function"

function(函数) 实际上是object的一个”子类型”。函数是“可调用对象”,它有一个内部属性[[call]],该属性使其可以被调用。

函数不仅是对象,还可以拥有属性

  1. function a(b,c){}
  2. a.length //2 即函数声明的两个命名参数

3.array
数组也是对象,也是object的一个“子类型”。数组的元素按数字顺序进行索引,length属性是元素的个数
(对象是通过字符串键值)

值和类型

javascript 中的变量是没有类型的,只有值才有,变量可以随时持有任何类型的值

也就是说 语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以现在被赋值为字符串类型值,随后又被赋值为数字类型值。

  1. var a = 42
  2. typeof a //"number"
  3. a = true
  4. typeof a //"boolean"
  5. typeof运算符总是返回一个字符串
  6. typeof typeof 42 //"string"

undefined 和 undeclared(未声明)

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

image.png

image.png

第二章:值

数组