资讯专栏INFORMATION COLUMN

JS 作用域 var与let 区别

antyiwei / 568人阅读

摘要:在入门时,最让人傻傻分不清楚的就是与带来的作用域的苦恼。明确循环内部的与中的是在不同的作用域中,它们有各自多带带的作用域。局部使用定义时只在该函数作用域内部有效。

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

代码分析

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://www.ucloud.cn/yun/90537.html

相关文章

  • 深入理解letvar区别(暂时性死区)!!!

    摘要:会出现这样的情况是因为拥有暂时性死区。规定暂时性死区和语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。 首先我们应该知道js引擎在读取js代码时会进行两个步骤: 第一个步骤是解释。 第二个步骤是执行。 所谓解释就是会先通篇扫描所有的Js代码,然后把所有声明提升到顶端,第二步是执行,执行就是操作一类的。 我们先来看个简单的变量提升...

    tanglijun 评论0 收藏0
  • 总结下varlet 和 const 的区别

    摘要:前言和的区别是老生常谈,看到网上一些文章的总结,有的不太全面,甚至有的描述不太准确,在这里尽量全面的总结下这三者的区别。最后以上大概是总结后的内容,看来,还是多用吧。 前言 var 和 let 的区别是老生常谈,看到网上一些文章的总结,有的不太全面,甚至有的描述不太准确,在这里尽量全面的总结下这三者的区别。 let 是 ES6新增的变量类型,用来代替 var 的一些缺陷,跟 var...

    pingink 评论0 收藏0
  • JSletvar区别

    摘要:打印错误配合循环的独特应用非常适合用于循环内部的块级作用域。看一个常见的面试题目同步注册回调函数到异步的宏任务队列。是循环体内局部作用域,不受外界影响。 1. 定义变量 声明语法 var upperA = A; let upperB = B; const upperC = C; 只声明不初始化的结果,【const定义的常量不可以修改,而且必须初始化。】 // var 声明变量 ...

    wenshi11019 评论0 收藏0
  • JavaScript 语言核心笔记(持续更新)

    摘要:在同一个块内,不允许用重复声明变量。中为新增了块级作用域。自带遍历器的对象有数组字符串类数组对象对象的对象等和结构对象。返回一个遍历器,使遍历数组的键值对键名键值。 目录 1.语法 2.类型、值和变量 3.表达式和运算符 4.语句 5.数组 6.对象 7.函数 8.全局属性和方法 9.词法作用域、作用域链、闭包 10.原型链、继承机制 11.this的理解 12.ES5新特性 13.E...

    suosuopuo 评论0 收藏0
  • 理解JavaScript的核心知识点:作用

    摘要:也毫不例外,但在中作用域的特性与其他高级语言稍有不同,这是很多学习者久久难以理清的一个核心知识点。主要使用的是函数作用域。 关于作用域:About Scope 作用域是程序设计里的基础特性,是作用域使得程序运行时可以使用变量存储值、记录和改变程序的状态。JavaScript 也毫不例外,但在 JavaScript 中作用域的特性与其他高级语言稍有不同,这是很多学习者久久难以理清的一个核...

    HelKyle 评论0 收藏0

发表评论

0条评论

antyiwei

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<