美文网首页
6、变量提升的处理机制(1)

6、变量提升的处理机制(1)

作者: 自己写了自己看 | 来源:发表于2021-01-08 16:13 被阅读0次

1、变量提升:在当前上下文中(全局/私有/块级),JS代码自上而下执行之前,
浏览器会提前处理一些事情(可以理解为词法解析的一个环节,词法解析一定
发生在代码执行之前):会把当前上下文中所有带VAR/FUNCTION关键字的进
行提前的声明或者定义

声明declare:var a
定义defined: a = 10

带 var 的只会提前的声明
带 function 会提前声明加定义

console.log(a);  // undefined
var a = 12;  // 不需要再声明a了,只需要赋值就行
a = 13;
console.log(a);  // 13
func();
function func() {
    var a = 12;
    console.log('OK');
}
//  真实项目中建议使用函数表达式创建函数,因为这样在变量提升阶段
//  只会声明函数不会赋值
//  func();  // Uncaught TypeError: func is not a function
var func = function () {
    console.log('OK')
};
//  func(); // 正确执行

匿名函数“具名化”

var func = function AAA() {
    /**
     把原本作为值的函数表达式匿名函数“具名化”(虽然说是起了名字,
     但是这个名字不能在外面访问,也就是不会在当前的上下文中创建
     这个名字)
   */
    /**
     当函数执行时,在形成的私有上下文中,会把这个具名化的名字作为私有
     上下文中的变量(值就是这个函数)来进行处理
    */
    console.log('OK');
}
AAA();  //  Uncaught ReferenceError: AAA is not defined  
console.log(a);  // ReferenceError: a is not define
a = 13;
console.log(a)
console.log(a);  // Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 12;
a = 13;
console.log(a);

2、基于 var 或者function 在 全局上下文 中声明的变量(全局变量)会 “映射”到
GO(全局对象window)上一份,并且成为他的属性,而且接下来是一个修改,
另外一个也会跟着修改

相关文章

  • 6、变量提升的处理机制(1)

    1、变量提升:在当前上下文中(全局/私有/块级),JS代码自上而下执行之前,浏览器会提前处理一些事情(可以理解为词...

  • 变量提升的处理机制

    var与function 变量提升:在当前上下文中(全局/私有/块级),JS代码自上而下执行之前,浏览器会提前处理...

  • 《深入理解ES6》读书笔记——1.块级作用域绑定

    1)var声明及变量提升机制 1.概念 提升机制:在函数作用域或全局作用域中,通过var声明的变量,无论实际在哪里...

  • ES6

    1.变量声明let和const 预解析机制 : var有变量提升的机制 把声明赋值和打印的语句顺序交换 ES5的解...

  • 8、变量提升的处理机制(3)

    1、当前阶段浏览器对JS变量提升的处理: 向前兼容ES3/ES5规范:(1)判断体和函数体等不存在块级上下文,上下...

  • 7、变量提升的处理机制(2)

    1、条件判断下的变量提升:EC(G)全局上下文中的变量提升, 条件中带 function 的在新版本浏览器中只会提...

  • 前端经典面试题合集(一)

    1.谈谈变量提升 考察点:js基础知识,js执行机制,变量的提升答:执行js代码时,会生成执行环境,在函数中的代码...

  • 《javascript基础补充--作用域与作用域链相关知识点》

    关键词:全局变量、局部变量、变量提升机制、内存回收机制、作用域、作用域链 变量(作用域) 局部变量可以与全局变量重...

  • 变量提升机制

    什么是变量提升 变量提升机制:当栈内存形成,JS代码自上而下执行之前,浏览器首先会把所有带“var”、“funct...

  • 变量提升和函数提升

    变量提升 所谓变量提升,就是变量的声明在执行前会被提升到改作用域顶部。 代码在执行前会被处理成如下形式: 函数提升...

网友评论

      本文标题:6、变量提升的处理机制(1)

      本文链接:https://www.haomeiwen.com/subject/ktzcoktx.html