let 作用域

参考: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只有创建和初始化,没有赋值。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,915评论 2 17
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,868评论 0 6
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,650评论 0 2
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,379评论 0 7
  • 水影闲池,流风满榭,暝天纸鸢微斜。一树鹊鸣,惊煞含露花。淡酒数杯无度,枕芳草,醉卧无话。歌舞处,梦易遣散,...
    金鱼没头脑阅读 258评论 0 0