你不知道的js(中卷) 第1章 类型

      本书中,我们这样来定义“类型”(与规范类似):对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值。

      几乎所有的JavaScript程序都会涉及某种形式的强制类型转换,要正确合理地进行类型转换,我们必须掌握JavaScript中的各个类型及其内在行为。

      JavaScript的七种内置类型:
1.空值null
2.未定义undefined
3.布尔值boolean
4.数字number
5.字符串string
6.对象object
7.符号symbol(ES6新增)

      typeof运算符可以查看值属于这七种类型的哪一种。
      (null除外,typeof null 为 "obeject",这是个bug,但可能会长期留存了)
      还有个例外是function,照说function是对象,但typeof一个函数,会得到"function"。这是因为函数是个“可调用对象”,是object的一个“子类型”。
      JavaScript里的数组也是object的一个“子类型”。typeof 数组 为 "object"。
      关于函数:函数对象的length属性是其声明的参数的个数。

      JavaScript中,值有类型,变量没有类型,变量可以持有任何类型的值。
      变量在未持有值的时候为undefined。
      JavaScript中变量undefined和undeclared不同:变量已在作用域中声明但还没有赋值,则为undefined;如果未在作用域中声明过,则为undeclared。
      但JavaScript有个比较狗的地方是,typeof一个undeclared变量,会输出undefined。跟typeof一个已声明但未赋值得变量 结果相同。

      由于typeof一个未声明的变量不会报错,所以可以用typeof检查一个变量是否已被声明并赋值过。

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