美文网首页
let 作用域

let 作用域

作者: 你给的恶作剧 | 来源:发表于2017-07-27 18:13 被阅读0次

参考:https://zhuanlan.zhihu.com/p/28140450

本文绝大部分内容来自上述地址,做为学习资料修改后保存,感谢作者

MDN中 let 的描述可以简单的概括成:

1.let 声明的变量的作用域是块级的;

2.let 不能重复声明已存在的变量;

3.let 有暂时死区,不会被提升。

var 声明的过程:

代码如下:

  function fn(){
       var x =1
       var y =2
   }
   fn()

执行顺序:

1.进入fn,为fn创建一个环境。

2.找到fn中所有用var声明的变量,在这个环境中创建这些变量

3.变量初始化为undefined

4.执行代码

5.x=1将变量赋值为1,y=2将变量赋值为2

总结:var声明会在代码执行前就创建变量,并将其初始化为undefined(var的创建和初始化被提升了);

function 的声明过程:

1.找到所用用function 声明的变量,在环境中创建这些变量

2.将这些变量初始化并赋值

3.然后执行代码

总结:function声明会在代码执行前就创建、初始化并赋值

Let 声明的过程:

代码:

{
       let x = 1
       x=2
 }

过程:

1.找到所有用let声明的遍历,在环境中创建这些变量

2.开始执行代码(没有初始化)

3.执行 x = 1,将x初始化为1(并不是赋值,如果代码是let x ,就将x初始化为undefined)

4.执行x =2,将x进行赋值

5.如果在let x 以前使用x,由于x没有初始化,所以会报错;

总结:let只是创建变量这个过程被提升了,但是初始化没有提升;而var的创建和初始化都提升了;

总结:

1:let 的创建过程被提升了,但是初始化。

2:var 的创建和初始化都被提升了。

3:function 的创建、初始化和赋值都被提升了。

4:const 和let的区别是,const只有创建和初始化,没有赋值。

相关文章

  • ES2015(ES6)学习手册

    作用域 全局作用域 函数作用域 块级作用域(es6) let let 声明的变量只在所处的块级有效 let没有变量...

  • es6解读1: let, const 和 smybol

    let const 作用域 作用域概念 如何使用let和const 使用let 形成块级作用域 es6下强制开启...

  • es6-let与const

    作用域的概念 es5 两个作用域:全局作用域、函数作用域 es6 增加了块作用域 let let var 作用域不...

  • ES6

    ①const和let var 只有 全局作用域 和 函数作用域 没有块级作用域 { }let 、 const...

  • js面试题

    1、let、var、const区别 1、作用域不同,var是函数作用域,而let是块作用域2、 let不能在定义之...

  • let和var的区别

    作用域不同 let的作用域制作用于当前代码块 let就会报错。因为var作用的是函数作用域,let作用的是块级作用...

  • ES6语法--let和const

    1:let和const:作用域,全局作用域,函数作用域以及块级作用域(es6)。 let声明的变量只在块级作用域内...

  • ECMAScript6--2.基本语法let 和 const

    1.let 和 const 2.作用域的概念* 全局作用域* 函数作用域* 块作用域--let和const是在块作...

  • ES6-let & const

    一. let与var let 是块级作用域;var 是函数级作用域。 二. let 与 const let与con...

  • var、let 和 const

    关键字 var、let 和 const 表示变量作用域,其中var 表示函数作用域,let 表示块作用域,cons...

网友评论

      本文标题:let 作用域

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