vue里面let是什么_午后躺椅上看关于Vue的20点

1.var,const,let的区别

首先,必须明确let 与const是ES6 中为了修复var的缺陷引入的,那么var有什么缺陷呢?

var

1.var没有块级作用域

在JS函数中的var声明,其作用域是函数体的全部。

    for(var i=0;i<10;i++){
     
          var a = 'a';
    }
    console.log(a);  
 console.log(l);
fd642eb13ac9795b77a1237800713eb8.png
image-20200831223431861

2.循环内变量过度共享

for (var i = 0; i 3; i++) {
     
    setTimeout(function () {
        console.log(i)
    }, 1000);
}
75d4175ddf2263f009e55e557c674959.png
image-20200831223638381

循环本身及三次 timeout 回调均共享唯一的变量 i。当循环结束执行时,i的值为3。所以当第一个 timeout 执行时,调用的 i 当让也为 3 了。

因此,let与const就是来解决这些问题的。

let

必须声明 'use strict' 后才能使用let声明变量,否则浏览并不能显示结果

  • let声明的变量拥有块级作用域。 也就是说用let声明的变量的作用域只是外层块,而不是整个外层函数。let 声明仍然保留了提升特性,但不会盲目提升,在示例一中,通过将var替换为let可以快速修复问题,如果你处处使用let进行声明,就不会遇到类似的bug。
  • let声明的全局变量不是全局对象的属性。这就意味着,你不可以通过window.变量名的方式访问这些变量。它们只存在于一个不可见的块的作用域中,这个块理论上是Web页面中运行的所有JS代码的外层块。
  • 形如for (let x...)的循环在每次迭代时都为x创建新的绑定。这是一个非常微妙的区别,拿示例二来说,如果一个for (let...)循环执行多次并且循环保持了一个闭包,那么每个闭包将捕捉一个循环变量的不同值作为副本,而不是所有闭包都捕捉循环变量的同一个值。所以示例二中,也以通过将var替换为let修复bug。这种情况适用于现有的三种循环方式:for-of、for-in、以及传统的用分号分隔的类C循环。
  • 用let重定义变量会抛出一个语法错误(SyntaxError)。这个很好理解,用代码说话
let a = 'a';
let a = 'b';
45ffe7c3973c60d53bec15fc489b7291.png
image-20200901091822957

const

作用:用来定义常量,不允许重复声明

还有一篇帖子可以看看:https://juejin.im/post/6844903704189992973

作者:麻辣小隔壁 链接:https://www.jianshu.com/p/4e9cd99ecbf5 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

<

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值