js中const、let、var之间的区别

const

const定义的变量不可以修改,而且必须初始化

const b = 1;    //正确
const b;    //错误,必须初始化
console.log('函数外const定义b:' + b);/有输出值
//b = 5;
//console.log('函数外修改const定义b:' + b);//无法输出
image.png

先上图:

从前后代码对比,唯一的区别就是在循环创建i的方式不同,一个是var,一个是i,而var出的变量,在学习js初期也是踩了不少作用域问题的坑,在循环执行完成后,i的值任然存在,而且会在离开循环行再++一次,让打印出了10;再看下方用let创建的i在离开循环时,这个i已经是被销毁的变量,所以在这个地方与var创建的变量的区别应该显而易见;
在查询网上资料,得出的结论是,var出的变量是函数级作用域,作用范围是在函数开始阶段和函数执行完成之前内都是存在的;并且如果该函数内部还存在匿名函数等特殊函数,这个var出的变量在匿名函数中任然可以用;
let出的变量作用域是 块作用域,在离开某一代码块,该变量就会被销毁不存在.

再看下图


image.png

上方的嵌套内for循环重新定义的let i 并没有被重新赋值而受到影响,而是重新定义了一个新的变量,下方for循环也是再次验证了let的作用域是 块作用域的

你可能感兴趣的:(js中const、let、var之间的区别)