一、作用域分类 (作用域范围内定义的变量,整个作用域都可以访问)
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等)