资讯专栏INFORMATION COLUMN

对比let、const、var的异同

Andrman / 1273人阅读

摘要:和的区别作用域是函数体的全部声明变量提升循环内变量过度共享循环本身及三次回调均共享唯一的变量。

let、const和var的区别

var : 作用域是函数体的全部,声明变量提升

  console.log(num);//undefined
  var num = 2 
  //循环内变量过度共享
  for (var i = 0; i < 4; i++) {
    alert(i);//0,1,2,3
  }
  for (var i = 0; i < 4; i++) {
     setTimeout(function () {
       alert(i)//4,4,4,4
     }, i * 100);
  }

循环本身及三次timeout回调均共享唯一的变量i。当循环结束执行时,i的值为4,此时回调尚未被触发.
所以当第一个timeout执行时,调用alert(i),此时i的值为4,所以最终弹出来的是4.

let声明的变量拥有块级作用域,声明的全局变量不是全局对象的属性,声明的变量直到控制流到达该变量被定义的代码行时才会被装载,用let重定义变量会抛出一个语法错误

  var j = 100;
  for (let i = 0; i < 4; i++) {
     console.log(j)//not defined,暂时性死去,即使在该作用域外已经存在这个变量,如果作用域内需要使用 let、 const 再次声明,则必须提前,否则无法使用,直到声明后才可以使用
     setTimeout(function () {
       alert(i)//0、1、2、3,块级作用域
     }, i * 100);
     let j = 0;
     //let j = 2;//SyntaxError,重定义变量会抛出一个语法错误
     console.log(j)//0,0,0,0
  }
  window.i//undefined,不是全局对象的属性
  

const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致SyntaxError(语法错误).

    const num = 1;
    num = 2;// Assignment to constant variable

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97893.html

相关文章

  • 只给你5分钟,掌握varletconst异同

    摘要:用声明的变量,其可用范围在当前执行上下文。在函数外声明的变量,其作用范围是全局。抛出语法错误错误信息未捕获的异常标识符已经被声明过。例如输出照例,命名规范指出我们应该用大写字母声明常量。为了让代码长期可维护,命名规范还是值得遵守的。 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。原文出处:https://dzone.com/articles/...

    lookSomeone 评论0 收藏0
  • [原创][连载]nim与python异同3

    摘要:变量常量绑定无特定关键字直接设值将一个文字列放到名为的变量里的类型由文字列上面定义的正则表达式变成了整数这里就带来一个在大工程里很容易带来困扰的问题理解代码不得不受制于类型极易变的变量要理解代码所必需的工作量极大可变变量前缀将变量与 变量(常量)绑定 python无特定关键字,直接设值a = r^s*(d{4}-d{2}-d{2})s{1,2}(.+)$ # 将一个文字列放到名为a的...

    GraphQuery 评论0 收藏0
  • 深入理解ES6笔记(一)块级作用域绑定

    摘要:和都能够声明块级作用域,用法和是类似的,的特点是不会变量提升,而是被锁在当前块中。声明常量,一旦声明,不可更改,而且常量必须初始化赋值。临时死区临时死区的意思是在当前作用域的块内,在声明变量前的区域叫做临时死区。 主要知识点有:var变量提升、let声明、const声明、let和const的比较、块级绑定的应用场景showImg(https://segmentfault.com/img...

    马忠志 评论0 收藏0
  • 《深入理解ES6》笔记——块级作用域绑定(1)

    摘要:没有声明的情况和都能够声明块级作用域,用法和是类似的,的特点是不会变量提升,而是被锁在当前块中。声明常量,一旦声明,不可更改,而且常量必须初始化赋值。临时死区的意思是在当前作用域的块内,在声明变量前的区域叫做临时死区。 本章涉及3个知识点,var、let、const,现在让我们了解3个关键字的特性和使用方法。 var JavaScript中,我们通常说的作用域是函数作用域,使用var声...

    2bdenny 评论0 收藏0

发表评论

0条评论

Andrman

|高级讲师

TA的文章

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