码迷,mamicode.com
首页 > 其他好文 > 详细

479 变量提升机制

时间:2020-06-24 19:35:01      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:block   一些事   lazy   内存   变量提升   cti   操作   fun   class   

变量提升(声)

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

当浏览器开辟出供代码执行的栈内存后,代码并没有自上而下立即执行,而是继续做了一些事情:把当前作用域中所有带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 变量提升机制

标签:block   一些事   lazy   内存   变量提升   cti   操作   fun   class   

原文地址:https://www.cnblogs.com/jianjie/p/13189044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!