面试官: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; // 报错:尝试修改常量值

——转载自作者:纯粹要努力

全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务