前端面试题:JS中的let和var的区别
最近很多前端的朋友去面试被问到let和var的区别,其实 阮一峰老师的ES6 中已经很详细介绍了 let 的用法和 var 的区别。我简单总结一下,以便各位以后面试中使用。 ES6 新增了 let 命令,用来声明局部变量。它的用法类似于 var ,但是所声明的变量,只在 let 命令所在的代码块内有效,而且有暂时性死区的约束。 先看个 var 的常见变量提升的面试题目: 题目 1: var a = 99; // 全局变量a f(); // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 console.log(a); // a=>99, 此时是全局变量的a function f( ) { console.log(a); // 当前的a变量是下面变量a声明提升后,默认值undefined var a = 10; console.log(a); // a => 10 } // 输出结果: undefined 10 99 如果以上题目有理解困难的童鞋,请系统的看一下老马的 免费JS高级视频教程 。 ES6可以用let定义块级作用域变量 在ES6之前,我们都是用var来声明变量,而且JS只有函数作用域和全局作用域,没有块级作用域,所以 {} 限定不了var声明变量的访问范围。 例如: { var i = 9; } console.log(i); // 9 ES6新增的