当前位置:IT橙子的前端技术博客 > 前端笔记 > 正文

前端面试—JS基础汇总

时间:2023-08-17 来源:未知 分类:前端笔记 阅读:

一、请说出下列最终执行结果,并解释为什么。

var a = []
for(var i = 0; i < 10; i ++){
    a[i] = function(){
        console.log(i)
    }
}
a[6]()

答案:最终输出结果:10。原因:var声明的变量i是全局变量,循环结束的时候i的值是10,方法调用时循环已经结束,打印i是10。

二、请说出下列最终执行结果,并解释为什么

var tmp = 123
if(true) {
    console.log(tmp)
    let tmp
}

答案:最终执行结果会报错,报错信息如下,在块级作用域中声明变量tmp,tmp就会被绑定到所在的块级作用域中,此作用域中,变量声明之前被调用,所以会报错,它不受上层作用域同名变量的影响。

三、结合 ES6 新语法,用最简单的方式找出数组中的最小值

var arr = [12, 34, 32, 89, 4]

答案:使用Math.min()方法以及扩展运算符实现

let minValue = 
(...arr);
console.log(minValue)

四、请详细说明 var, let, const 三种声明变量的方式之间的具体差别

答案:var, let, const是javaScript中变量声明的三种方式。

  • 作用域不同,var声明的变量作用域是全局的;let作用域是块级的,外层代码块不受内层代码块的影响 块级作用域以{}区分
  • 使用顺序不同,var声明的变量允许先使用再声明,而let声明的变量必须先声明再使用。
  • 变量提升,var声明的变量会有变量提升的情况,即函数及变量的声明都将被提升到函数的最顶部;let声明的变量不存在变量提升
  • 重复定义,var声明的变量可以重复定义,即后来定义的变量会覆盖之前的,而let声明的变量 不允许重复定义
  • 是否可修改,var、let声明的变量都允许被重新赋值,即值可以更改,而const声明的变量不允许被重新赋值,如果定义的是对象,则对象的引用可以修改。

五、请输出下列代码最终输出结果,并解释为什么。

var a = 10
var obj = {
    a:20,
    fn () {
        setTimeout(() => {
            console.log(this.a)
        })
    }
}
obj.fn()

答案:输出20。obj调用fn函数时,this指向obj,obj中的a等于20,所以this.a表示obj中的a,就等于20。

六、简述 Symbol 类型的用途

答案:

  • 用于创建独一无二的值,可做唯一key用于缓存等场景

  • 用于创建类的私有变量,利用symbol属性不能被枚举的特性声明作为私有属性

  • 用来重置对象的属性,比如 Symbol.toStringTag

  • 可实现 Symbol.iterator迭代器, 让普通对象变为可迭代对象

  • 使用Symbol.for(‘xxx’)获取全局的symbol值

  •  

七、说说什么是浅拷贝,什么是深拷贝

答案:

浅拷贝:拷贝对象里面的数据,但是不拷贝对象里面的子对象

深拷贝:会克隆出一个对象,数据相同,但是引用地址不同(就是拷贝A对象里面的数据,而且拷贝它里面的子对象)


-------------------------------------------正文完~-------------------------------------------

关于橙子

    橙子,一个奋斗在前端路上的女程序员~~

    橙子,热爱前端,关注前端,4年的前端工作经验,熟练掌握前端各项技能,熟练多种前端框架,希望遇到志同道合的前端朋友们,一起学习交流,共同进步!

学习交流

  • 微信公众号:IT橙子6 微信扫一扫添加关注 获取更多前端学习资料!
  • QQ交流群:592969963 IT橙子前端技术交流群

相关推荐