面试官:let, const 解决了什么问题?

我们在面试时,经常会被问“let, const 解决了什么问题?”,这种就是基础性的问题,可以回答的完美,也可以回答的很基础,一般下面这种框架回答就可以:  

  • var 变量 全局作用域, 浏览器端 var 声明在window,挂载到window上的  
  • let和const 声明的是不会挂载到window上的,可以减少变量污染 
  • 变量提升问题 hoisting   在声明之前就访问显示 undefined,不报错 ,我们看的很不舒服   
  • 块级作用域    es6一大使命是让js成为像java一样的企业级大型语言          
  • 改原来的var容易增加学习负担,变量提升这种不好理解的,所以另发明let把影响代码可读性的特性通过暂时性死区规避
  • 全局作用域/函数作用域/块级作用域   for while 。。。。。。 {}  块级            
  • 代码中的配置等非常需要常量,var 没有常量功能,所以用 const 实现,        

总结来说,你可以这样回答:

JavaScript底层原理包括变量提升、作用域链等,ES6引入了let和const来解决var存在的全局作用域、变量污染等问题,同时通过块级作用域和暂时性死区提高了代码可读性和安全性,满足了JavaScript成为企业级语言的需求,const还解决了var缺乏常量功能的问题。

在回答的时候穿插一些例子,你就举下面这些例子:

1. var变量声明

  • 函数作用域var声明的变量在函数作用域中有效,而不是块级作用域。
  • 变量提升:使用var声明的变量会被提升到其所在函数的顶部。

示例:

console.log(name); // 输出:undefined
var name = "John";
console.log(name); // 输出:John

第一处输出在我们看来很反人类,这都不报错,所以es6后,就推出了let。

2. let变量声明

let是ES6引入的新关键字,用于声明变量。相比varlet有以下优点:

  • 块级作用域let声明的变量只在其所在的块级作用域内有效。
  • 暂时性死区:使用let声明的变量在声明之前是不可访问的。

示例:

{
  console.log(name); // 报错:name is not defined
  let name = "Alice";
  console.log(name); // 输出:Alice
}

3. const常量声明

const也是ES6引入的关键字,用于声明常量。与let相比,const有以下特点:

  • 常量值不可变:使用const声明的变量必须在声明时初始化,并且其值在声明后不能被修改。

示例:

const PI = 3.14;
PI = 3.14159; // 报错:尝试修改常量值

文章转自:https://juejin.cn/post/7368079196445704203
 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值