类型和值

类型

  • js中有7个内置类型:null,undefined,Boolean,number,string,object,symbol

  • 变量没有类型,但是变量的值有类型。这些类型定义了值的固有行为

  • 在js中,undefined是指声明了一个可以存放值的变量,只是当前没有值。undeclared 则是指一个没有被声明的变量

  • typeof操作符的安全保护(防止错误抛出)机制,undefined和undeclared 在typeof的返回值上都返回undefined,在某些特定情况下检测没有生命过的变量很有帮助

  • 在JavaScript中,数组是数字索引的集合,能够存放任意类型的值.字符串有点类数组,但是他们之间又截然不同的行为,当你把它当作数组来对待的时候,你需要特别小心。JavaScript中的数字包括“整数”和浮点数值。

  • 基本类型中定义了几个特殊值。

    • null类型只有一个值:null,与undefined一个值一样。undefined是任何没有被赋值的变量或属性的默认值。void操作符能够从任何其他值中创建undefined

    • number包括几个特殊值,比如NaN(所谓的"Not aNumber",实际上更恰当的理解是"invalid number");+InfinityInfinity;以及-0

    • 简单原始类型(string,number等)通过值拷贝进行赋值或传递,但复合值(object等)是通过引用拷贝进行赋值或传递。JS中的引用并不像其他语言中的引用或指针--他们永远不指向其他变量或引用,仅指向底层的值。

类型和语法

  • FunctionArrayRegExp.prototype是已经创建和内置的

    • Function.prototype=()=>{}

    • Array.prototype=[]

    • RegExp.prototype.toString()="/(?:)/"

  • JavaScript为原始值提供对象包装类,被称为natives(String,Number,Boolean等)。这些对象包装器能够让原始值访问每个对象的子类型对应的行为(String#trim()Array#concat(...))。

  • 如果你有一个像"abc"这样的简单原始类型值,当你访问它的length属性或一些String.portotype的方法,JS会自动装箱这个值(把它封装在对应的封装类中),这样你才能访问这些属性和方法。