Js代码在运行前还有一个过程:预加载,预加载的目的是:事先构造运行环境例如全局环境,函数运行环境,还有构造作用域链(函数执行的第一步不是执行函数里的第一行代码而是在上下文变量里构造一个作用域链(作用是保证执行环境里有权访问的变量和函数是有序的),同时还会构造一个this对象,this变量的值就是当前执行环境外部的上下文变量的一份拷贝),而环境和作用域的构造的核心是指定好变量属于哪个范畴,因此在js语言里变量的定义在预加载完成而非运行时期(如:赋值操作是在运行期进行的)
我们定义函数方式是通过function xxx(){}形式,那么这个函数不管定义在哪里,它都属于全局对象window,所以他们的执行环境的外部的执行上下文都是指向window
Javascript变量分为两种类型:基本数据类型和引用类型
(一)基本数据类型指:Undefined、Null、Boolean、Number和String
(undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(typeof 运算符对于 null 值会返回 "Object"。)。<