• 区分大小写
    • 变量是弱类型
      • 定义变量只用var,初始化为任意值
    • 结尾分号可有可无
    • 注释
      • 单行注释: //
      • 多行注释: / /
    • 代码块
      • { code }
    • 变量
      • 声明变量
        • var test = ‘1’
        • 定义多个变量:var a = 1, b= 2
        • 定义多个类型:var a =1, b=’2’
        • 不一定需要初始化:var a
        • 变量可以存放不同类型的值: var a=’1’; a = 2
      • 命名变量
        • 第一个字符必须是字母,下划线(_),美元符号($)
        • 余下字符可以是下划线,字母,数字,$
      • 命名规则
        • Camel标记法:首字母小写,后面字母以大写字符开头(var myTestValue=0)
        • Pascal标记法: 首字母大写,后面字母以大写字符开头(var MyTestValue=0)
        • 匈牙利标记法:pascal命名变量前加变量类型的小写字母(var MyTestValue=0)
      • 变量声明不是必须的
        • var a = 2; b = a + 1; alert(b)
    • 关键字
      • break
      • case
      • catch
      • continue
      • default
      • delete
      • do
      • else
      • finally
      • for
      • function
      • if
      • in
      • instanceof
      • new
      • return
      • switch
      • this
      • throw
      • try
      • typeof
      • var
      • void
      • while
      • with
    • 保留字
      • abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、translent、volatile
    • 原始值和引用值
      • 原始值
        • 存储在栈中的数据段
        • 原始类型:Undefined、Null、Boolean、Number、String
      • 引用值
        • 存储在堆中的对象。
    • 原始类型
      • typeof运算符:检查变量或值的类型
      • Undefined 类型
        • 只有一个值undefined。未初始化的变量默认值为undefined
        • 当函数无明确返回值时,返回的值也是undefined
      • Null 类型
        • 专用值null
        • unll == underfined //结果为true,值undefined实际是从值null派生而来
        • 现在null被认为是对象的占位符,从技术上它仍然是原始值。
      • Boolean 类型
        • true/false
      • Number 类型
        • 既可以表示32位整数,还可以表示64位的浮点数
        • 整数
        • 浮点数
          • 浮点数在计算之前,真正存储的是字符串
          • 小数计算的误差
            • 十进制值最多有17位进制位,17位之后的值将被裁去,从而造成一些小的数学误差。
        • 特殊的Number值
          • Number.MAX_VALUE
          • Number.MIN_VALUE
          • Number.POSITIVE_INFINITY //当计算生成的数大于 Number.MAX_VALUE 时
          • Number.NEGATIVE_INFINITY // 当计算生成的数值小于 Number.MIN_VALUE 时
          • Number.POSITIVE_INFINITY //值为Infinity 无穷大
          • Number.NEGATIVE_INFINITY // 值为-Infinity
          • NaN
            • 特殊值是 NaN,表示非数(Not a Number)
            • alert(NaN == NaN); //输出 “false”
      • String 类型
        • 唯一没有固定大小的原始类型
        • 字符串字面量是由双引号(”)或单引号(’)声明的
        • 字符串中每个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意味着字符串中的最后一个字符的位置一定是字符串的长度减 1:
          • image.png
        • 字符字面量
          • \n 换行
          • \t 制表符
          • \b 空格
          • \r 回车
          • \f 换页符
          • \ 反斜杠
          • \’ 单引号
          • \” 双引号
          • \0nnn 八进制代码 nnn 表示的字符(n 是 0 到 7 中的一个八进制数字)
          • \xnn 十六进制代码 nn 表示的字符(n 是 0 到 F 中的一个十六进制数字)
          • \unnnn 十六进制代码 nnnn 表示的 Unicode 字符(n 是 0 到 F 中的一个十六进制数字)
    • 类型转换
      • 转换成字符串
        • var a = ‘1’
        • toSting()
          • 将值转化为字符串
          • Boolean、数字,字符串都有toSting()方法
          • Number类型比较特殊
            • 默认模式
              • num.toString()
                • 最终都输出十进制的形式字符串
            • 基模式
              • num.toString(2): 输出二进制形式
              • num.toString(8): 输出八进制形式
              • num.toString(16): 输出十六进制形式
      • 转换成数字
        • parseInt()
          • 首先检查字符串0位置是否是数字,如果不是则返回NaN。
          • 如果0位是有效数字,则依次检查,一直到非有效数字的字符位置,这时将之前的数字返回。
            • parseInt(‘123abc’) 输出123
          • 基模式
            • parseInt(‘AF’,16),输出十六进制,返回175
            • 适用二进制,八进制,十进制,十六进制
            • 如果十进制数前面包含0,则会转化为八进制的值,所以最好使用基数10
              • parseInt(‘010’) //返回8

        • parseFloat()
          • 类似parseInt
      • 强制类型转换
        • Boolean(value) - 把给定的值转换成 Boolean 型;
          • 返回false
            • 空字符串、数字0、undefined、null
        • Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
          • 用 Number() 进行强制类型转换,”1.2.3” 将返回 NaN,因为整个字符串值不能转换成数字
          • 如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
          • 不同的值调用Number()
            • Number(false) 0
            • Number(true) 1
            • Number(undefined) NaN
            • Number(null) 0
            • Number(“1.2”) 1.2
            • Number(“12”) 12
            • Number(“1.2.3”) NaN
            • Number(new object()) NaN
            • Number(50) 50
        • String(value) - 把给定的值转换成字符串;
    • 引用类型
      • 类(class)
      • Object 对象
        • 属性
          • constructor
            • 对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
          • Prototype
            • 对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。
        • 方法
          • hasOwnProperty(property)
            • 判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty(“name”))
          • IsPrototypeOf(object)
            • 判断该对象是否为另一个对象的原型。
          • PropertyIsEnumerable
            • 判断给定的属性是否可以用 for…in 语句进行枚举。
          • ToString()
            • 返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
          • ValueOf()
            • 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。
      • Boolean 对象
      • Number 对象
        • ValueOf()
          • 要得到数字对象的 Number 原始值
        • toFixed()
          • 返回的是具有指定位数小数的数字的字符串表示
        • toExponential()
          • 返回的是用科学计数法表示的数字的字符串形式
        • toPrecision()
          • 返回数字的预定形式或指数形式
            • .toPrecision(1)
            • .toPrecision(2) // 两位数
            • .toPrecision(3) // 三位数
      • String 对象
        • length
          • 字符串中的字符个数
        • charAt()
          • 返回的是包含指定位置处的字符的字符串
        • charCodeAt()
          • 返回字符代码
        • concat()
          • 用于把一个或多个字符串连接到 String 对象的原始值上
        • indexOf()
          • 返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
        • lastIndexOf()
          • 返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
        • localeCompare()
          • 对字符串进行排序
            • 如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。
            • 如果 String 对象等于参数中的字符串,返回 0
            • 如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。
        • slice()
          • 返回的是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置。
        • substring()
          • 返回的是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置。
        • toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()
          • 大小写转换
      • instanceof 运算符
        • instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。
        • 与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。