JavaScript-预编译

预编译

前奏

imply globle 暗示全局变量 : 未声明直接赋值的的变量归window所有

一切声明的全局变量 , 全是window的属性.

window就是全局的域

var a = 123;
//window  {
//       a :123
//}

console.log(a)  === console.log(window.a);

例子

预编译发生在函数执行的前一刻

四部曲:

  1. 创建AO 对象 Activation Object (执行期上下文)

  2. 找形参和变量声明 , 将变量和形参名作为AO属性名,值为undefined

  3. 将实参和形参统一

  4. 在函数体里面找函数声明, 值赋予函数体

function fn (a) {
    console.log(a); //function
    var a = 123;
    console.log(a); //123
    function a () {}
    console.log(a); //123 
    var b = function (){}
    console.log(b); //function
    function d () {} 
}
fn(1);

预编译发生在全局执行的前一刻

三部曲

全局预编译 GO === window

  1. 创建GO
  2. 变量名作为AO的属性名, 值为undefined
  3. 在函数体里面找函数声明, 值赋予函数体
global = 100;
function fn() {
    console.log(global); //undefined
    global = 200;
    console.log(global);  //200
    var global = 300;
}
fn();
var global;

   转载规则


《JavaScript-预编译》 张磊 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
vscode-效率提升 vscode-效率提升
vscode效率提升快捷键行 的操作: 重开一行:光标在行尾的话,回车即可;不在行尾,Ctrl + enter 向下重开一行;shift + Ctrl + enter 则是在上一行重开一行 删除一行:光标没有选择内容时,ctrl + x
2018-03-01
下一篇 
JavaScript-正则表达式 JavaScript-正则表达式
正则表达式(RegExp)创建 var reg = /abc/igm; //字面量定义规则 var str = "abcd"; reg.test(str); // true //正则表达式的方法 , 参数为字符串 , 如果符合则返回
2018-02-18
  目录