面试官:var、let、const之间的区别是什么?
var
、let
和 const
是 JavaScript 中用于声明变量的关键字,它们之间有以下区别:
作用域:
var
:具有函数作用域(function scope),在声明它的函数内部有效。let
和const
:具有块级作用域(block scope),在声明它们的块(例如,if、for、while 循环或 {} 包裹的代码块)内部有效。
变量提升:
var
:存在变量提升(hoisting),即变量可以在声明之前使用,但其值为undefined
。let
和const
:不会发生变量提升,尝试在声明之前使用会导致 ReferenceError。
重复声明:
var
:允许在同一作用域内重复声明同名变量,后声明的会覆盖前面的声明。let
和const
:不允许在同一作用域内重复声明同名变量,否则会导致 SyntaxError。
赋值和重新赋值:
var
和let
:允许重新赋值。const
:声明常量,一旦赋值后就不能再次赋值,尝试修改常量的值会导致 TypeError。
全局对象属性:
var
声明的变量会成为全局对象的属性(在浏览器环境中为window
对象的属性)。let
和const
不会成为全局对象的属性。
临时死区(Temporal Dead Zone,TDZ):
let
和const
在声明之前会存在临时死区,即在声明之前访问变量会导致 ReferenceError。
循环中的行为:
var
在循环中存在变量提升和共享作用域的问题,容易导致意外行为。let
和const
在循环中每次迭代会创建一个新的作用域,避免了共享作用域的问题。
综上所述,let
和 const
相比于 var
更加安全和可预测,推荐在需要声明变量时优先使用 let
和 const
。其中,const
适用于声明不会被重新赋值的常量,而 let
适用于声明可重新赋值的变量。
分类:
JavaScript
标签:
暂无标签
版权申明
本文系作者 @K 原创发布在前端面试题大全站点。未经许可,禁止转载。
暂无评论数据