博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 作用域 var与let 区别
阅读量:6721 次
发布时间:2019-06-25

本文共 658 字,大约阅读时间需要 2 分钟。

在es6入门时,最让人傻傻分不清楚的就是var与let带来的作用域的苦恼。最近又一次翻看阮一峰老师的文章,重新有了自己的小结。

  1. 代码分析
var a = [];for (var i = 0; i < 10; i++) {  a[i] = function () {    console.log(i);  };}a[6](); // 10复制代码
var a = [];for (let i = 0; i < 10; i++) {  a[i] = function () {    console.log(i);  };}a[6](); // 6复制代码

以上两段代码区别在于var与let使用的作用域不同。 1.var 变量的作用域是全局,而let 是局部的块作用域即for循环内。 2.明确循环内部的i与console.log(i)中的i是在不同的作用域中,它们有各自单独的作用域。 3.全局变量唯一性,var 声明的变量i在循环中被不断覆盖最终只是唯一的10,因此在外部调用中无论调用a数组的哪一个,最终都是10。 4.局部使用 let 定义时只在该函数作用域内部有效。例子如下:

for (let i = 0; i < 10; i++) {  // ...}console.log(i);// ReferenceError: i is not defined复制代码

个人小结,如有错误,望各位大佬指正。

转载于:https://juejin.im/post/5a4c3f47f265da432d287ca5

你可能感兴趣的文章
Tcl internal variables
查看>>
springcloud文章推荐
查看>>
java分享第十四天(TestNG Assert详解)
查看>>
一个JNI的helloworld小demo
查看>>
网络编程总结
查看>>
NIC Bonding: 2 nic port as 1 interface
查看>>
动态代理--jdk和cglib
查看>>
mysql sum count 性能优化 ----测试数据22万条
查看>>
Codeforces707Div2
查看>>
SSM常用pom依赖
查看>>
Python中用datetime包进行对时间的一些操作
查看>>
Web.xml配置详解之context-param
查看>>
WIKI扫盲手册
查看>>
Javascript - ExtJs - 整合百度文章编辑器
查看>>
JS分两种数据类型,你都知道吗?
查看>>
Bash条件判断
查看>>
JSF 2.0 + Ajax hello world example
查看>>
Firefox 插件 FlashGot 创建 Axel 下载任务
查看>>
php中相对路径和绝对路径如何使用(详解)
查看>>
Oracle 数据库、实例、用户、表空间、表之间的关系
查看>>