我们都知道javascript是解释型语言,执行的特点呢是编译一行,执行一行.按照这个思路有时候我们在运行代码时会有一些令人费解的现象出现.下面我们一起来执行下面三段代码. <script> var a = 123; console.log(a); </script> <script> console.log(a); </script> <script> console.log(a); var a = 123; </script> 运…
一.js运行三部曲: 1.语法分析(通篇扫描看有没有语法错误) 2.预编译 3.解释执行 二.预编译前奏 1.imply global 暗示全局变量:任何变量如果未经声明就赋值,此变量为全局对象所有 eg: a = 123; var a = b =123; 2.一切声明的全局变量,全是window的属性,一切定义在全局上的变量,都归window所有(window等价于全局) eg: console.log(a) 等价于 console.log(window.a); 举个例子: <sc…
先来做三个测试 eg1: var a; a = 1; function a() {}; console.log(a); eg2: var a; function a() {}; console.log(a); eg3: var a; function a() {}; a = 1; console.log(a); eg1:输出1 eg2:输出a方法 eg3:输出1 为什么输出结果是这样的? 先来看看js预编译实现过程: 1.js首先扫描var关键字,提前到顶端: 2.然后扫描functio…