479 变量提升机制

Posted jianjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了479 变量提升机制相关的知识,希望对你有一定的参考价值。

变量提升(声)

**栈内存、作用域、执行上下文【执行环境】**

当浏览器开辟出供代码执行的栈内存后,代码并没有自上而下立即执行,而是继续做了一些事情:把当前作用域中所有带var、function关键字的进行提前的声明和定义 =>变量提升机制 【预解析】

  • 带var的只是提前声明(declare): “var a;” ,如果只声明,没有赋值,默认值是undefined
  • 带function的不仅声明,而且还定义了(defined): “a=13”定义其实就是赋值,准确来说就是让变量和某个值进行关联
console.log(a); // undefined
var a = 12;
var b = a;
b = 13;
console.log(a); // =>12


// ---------------------


console.log(sum(10, 20));  // 30
function sum(n, m) {
    return n + m;
}


// ---------------------


//  函数表达式方式,由于使用VAR来创建SUM,变量提升阶段只会声明变量,不会赋值,所以此时函数在前面执行,函数是没有值的,不能执行(真实项目中这种方式最常用,因为它操作严谨)
console.log(sum); //=>undefined
// sum(10, 20); //=>Uncaught TypeError: sum is not a function
var sum = function (n, m) {
    return n + m;
};
// let sum=(n,m)=>n+m;
console.log(sum(10, 20));

技术图片

以上是关于479 变量提升机制的主要内容,如果未能解决你的问题,请参考以下文章

js提升机制(hoisting)

浏览器中的 JavaScript执行机制:07 | 变量提升:JavaScript代码是按顺序执行的吗?

Javascript运行机制

VsCode 代码片段-提升研发效率

JavaScript 执行机制

ES6 变量机制