一、作用域分类 (作用域范围内定义的变量,整个作用域都可以访问)

  1. 全局作用域

  使用var声明(或者不严格模式下没有声明)且在函数外定义的变量,其作用域范围是全局的,称其为全局作用域。

  2. 函数作用域

  使用var声明且在函数内部定义的变量,其作用域范围是整个函数,称其为函数作用域。

  3. 块作用域(ES6)

  使用let(或者const 常量)声明且在一个花括号(非函数)里面,其作用域范围就是这个花括号以内,称其为块作用域。

二、变量提升 (变量声明会提升至函数或者语句的最前面,位置还在其作用域范围内,let跟const定义的变量不会变量提升)

三、函数提升 (只有函数声明会提升,函数表达式不会提升)

  test()// 正常执行

 

  function test () {}

  testOne()// testOne 不是一个函数

  var testOne = function () {}

四、数据类型

  1. 六种基本数据类型 (undefined; null; boolean; number; string; symbol) 不能够是new Boolean; new String; new Number (这些的类型是object)

  2. 对象 (Array; Date; Math; RegExp; Function等)