let const var 区别

1.let命令是ES6中新增的一个命令,用于声明变量,该命令的用途有点类似于传统的var的定义变量,但是let的作用域是在一个块中才有作用,例如:

{
    let x = 100;
    var y = 99;
}
a //ReferenceError:a is not defined
b //99

let 命令比较适用于for循环的内部,因为该变量的作用域仅仅在for{}内部,出了这个域就不能用了

for(let i=0;i<100;i++){
    //....
}
console.log(i) //ReferenceError:i is not defined

var 声明的变量,相当于全局变量。

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10

这里面的var定义的i就是全局变量,随着遍历的进行,该值一直在变化,例如:第一轮遍历,a[0]==0,第二轮遍历:a[0] == a[1] = 1,第三轮遍历a[0] == a[1] == a[2] =2 。。。,所以遍历完成之后,a[0]==a[1]==....a[6]==...a[9] =10

如果,此时用let声明时:

var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6
这个值就是特定的值了。

2.var 定义变量之前,使用的时候不会报错,而let定义变量前使用会报错

// var 的情况

console.log(foo); // 输出undefined
var foo = 2;

// let 的情况

console.log(bar); // 报错ReferenceError
let bar = 2;

3.let在相同的作用域中不允许重复定义

// 报错
function () {
  let a = 10;
  var a = 1;
}
 
// 报错
function () {
  let a = 10;
  let a = 1;
}

const:是声明常量的命令,该命令声明的变量不允许改变

const PI = 3.1415;
PI // 3.1415
 
PI = 3;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • es6新推出了let const块级元素与之前的var的主要区别以下几点 let全局变量不再是window 块级作...
    带带带前端阅读 1,638评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,535评论 0 2
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,988评论 2 9
  • 本文属个人笔记,不做详解,仅供参考! let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于...
    R_yan阅读 29,213评论 6 18
  • 修身,出自儒家经典语录:“格物,致知,修身,齐家,治国,平天下。”老古人留下的经验和教训,对于现代人来说很有意义。...
    阿秋君阅读 3,635评论 0 3