js新特性辨别:let和var的区别及作用域

自ECMAScript 6出来,加入了两个新的关键字 const 和 let…

js新特性辨别:let和var的区别及作用域_第1张图片

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

js中使用let定义变量的时候,是需要使用严格模式的
据说,如果在不使用严格模式的情况下,使用let会报错
我们在使用let的时候添加上’use strict’即可,按照要求来使用let。


再来看这个:

	

说明在var定义变量的时候’{}'里面的a和外面的a是同一个,所以a的值会被覆盖掉

这也验证了上面所说:let是“块级”作用域元素

而且我们发现,使用let定义变量的时候’{}'里面的b和外面的b不是同一个,所以b的值并没有发生改变

你可能感兴趣的:(前端时间,js基础与进阶)