刷完前端面试题高频考点,再琢磨深挖题,面试官你还有什么招尽管使出来!

前言

逛网站时看到个网友在说,自己面试时被问到了刷到的题目当时很开心,信心满满的回答,但紧接着下一秒就笑不出来了,以为面试官是换问题问了,没想到在这个问题基础上发问,这让他就有点措手不及了,回答的支支吾吾的。其实面试官会继续在这问题上“不放过”你,也是看你理解并掌握的是有多深。一道大众题谁都会,这分辨不出个什么,但要是深挖下的问题,这技术也能看的出十七八九,所以也并不是专门去刁钻,面试官问的越深,你回答的稳,面试官可不得喜欢你。碰到这种情况不见得多,题题都去深挖等做法也没必要,但小编还是整理些在高频考点上深挖的题目,小伙伴们看看心里有个底,题目都是带有答案的。

面试题高频考点

var、let和const的区别

1、作用域不同(是否含有块级元素)

  • 块级作用域:声明的变量只在该代码块作用域内有效
  • var没有块级作用域,let、const有块级作用域

2、是否存在暂时性死区

  • let和const定义的变量是存在暂时性死区的,而var没有,原理如下:
  • 对于var而言,当进入var变量的作用域时,会立即为它创建存储空间,并对它进行初始化,赋值为undefined,当函数加载到变量声明语句时,会根据语句对变量赋值。
  • 而let和const却不一样,当进入let变量的作用域时,会立即给它创建存储空间,但是不会对它进行初始化

3、是否存在变量提升

  • 变量提升:变量在声明之前可以使用
  • var声明的变量存在变量提升,let、const不存在变量提升

4、能否重复声明

  • var声明的可以重复声明, let 和const声明的不可以重复声明

5、变量能否被修改

  • var、let声明的变量可以被修改,const声明的常量不可修改
面试官深挖的问题

1.那么var是什么作用域呢?这个我在面试的时候就被问到过,那么你知道吗?
var的作用域是在被定义的时候决定的,如下:

  • 在函数内部定义的话,那么var就是局部变量,其作用域称为函数作用域/局部作用域
  • 在函数外部定义的话,那么var就是全局变量,其作用域称为全局作用域

2.变量提升和函数提升的相关问题

//1
var a = 1;
function b(){
  var a = 2;
  console.log(a)   //输出的是什么 为什么
}
b()

//2
var a = 1; 
function a(){
	
}
console.log(a)  //输出的是什么 为什么
//3
var a = 1;
function a(){
	console.log(a);
}
a()//输出的是什么 为什么
  • 首先第一个输出的是2,这个涉及的就是作用域问题,因为在b()内部定义变量a,所有先访问函数内部的变量a,所有输出的是2,如果函数内部没有定义变量a,那么就访问全局中定义的a,输出的机会是1

  • 第二个输出的是1,这里隐藏了变量提升和函数提升的优先级,函数声明提升>变量声明提升.当js解析器在遇到函数声明时,会优先将其提升到定义体顶部,其次再是var声明的变量,这样就导致函数a被变量a给覆盖的情况,所以最终将打印1。

  • 第三个输出的是TypeError: a is not a function,这个和第二个类似,函数a被变量a给覆盖,所以当调用a()的时候,就会报错因为a只是一个变量了。

3.const声明的常量不可以改变=>const声明的对象属性是否可以改变?

const obj = {
    name:"大海",
    age: 18
}
obj.age = 20;
console.log(`name:${obj.name},age:${obj.age}`); 
//输出 name:大海,age:20

因为对象是引用类型的,obj中保存的仅是对象的指针,这就意味着,const仅保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值