前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端面试2021-003

前端面试2021-003

作者头像
大牧莫邪
发布2021-12-06 18:02:21
7900
发布2021-12-06 18:02:21
举报

一、多选题

1、关于剩余参数的使用,正确的是?AB

A、function fn(name, ...args) {...} B、function fn(...args) {...} C、function fn(...args, name) {...} D、function fn(...name, ...args) {...}

答案:AB C问题:剩余参数只能出现在参数列表的最后一个位置 D问题:函数的参数中,剩余参数只能有一个

2、声明类型的语法,正确的是?BC

A、class Person() {} B、class Person {} C、function Person () {} D、function Person {}

答案:BC A问题,class语法中没有类型名称后面的括号 D问题,function语法中,类型名称后面包含一个括号,使用函数模拟的类型

3、关于ES6中constructor()的描述,正确的是?ABD

A、类型中的构造函数,用来在创建对象的同时初始化对象属性 B、创建指定类型的对象时,会自动调用执行 C、类型中的构造函数,需要手工调用执行 D、类型中的普通函数,需要手工调用执行

答案:ABD C问题:构造函数是创建对象的时候自动执行,不需要手工调用

4、箭头函数的使用,操作语法正确的是?BD

A、let fn = ()-> console.log("hello") B、let fn = ()=> console.log("hello") C、let fn = name -> console.log("params") D、let fn = name => console.log("params")

答案:BD AC问题:箭头函数中使用错误了箭头符号

5、箭头函数中的参数的使用,正确的是? BD

A、let func = name, age => console.log(名称:{name}, 年龄:{age}) C、let func = name, age => {console.log(名称:{name}, 年龄:{age})} D、let func = (name, age) => {console.log(名称:{name}, 年龄:{age})}

答案:BD AC问题:多个参数出现时,不能省略括号

6、箭头函数中返回值的操作,正确的是?AD

A、let fc = (x, y) => {x++; y++; return x + y;} B、let fc = (x, y) => {x++; y++; x + y;} C、let fc = (x, y) => return x + y D、let fc = (x, y) => x + y

答案:AD B问题:函数代码部分,带有花括号的情况下需要通过return才能返回数据 C问题:函数代码部分,省略花括号的情况下不需要添加return关键词可以直接返回数据

7、关于类和对象的描述,正确的是?ABD

A、类表示类型的意思 B、对象是包含数据的、实际存在的物体 C、一个类型只能创建一个对象 D、多个对象可以属于一个类型

ABD C问题:一个类型可以创建多个互相独立的对象

8、ES6类型中,对于静态属性和静态函数的操作正确的是?BC

A、静态属性是声明在类型内部、类型方法外部的、使用let声明的变量 B、静态属性是声明在类型内部、类型方法外部的、使用static声明的变量 C、静态属性是属于类型的属性,所以只能被类型名称调用 D、静态属性是属于类型的属性,所以可以被类型名称和该类型创建的所有对象调用

BC

9、关于函数中使用默认值,操作方式正确的是?ACD

A、function fct(name) { name = name || 'default';... } B、function fct(name) {name = "default";...} C、function fct(name="defeult") {...} D、let fct = (name="default")=> {...}

ACD A-原生JS中默认值的添加 B-数据覆盖,不是默认值 C-ES6语法中给形式参数添加默认值 D-箭头函数中使用ES6语法的默认值

10、面向对象的继承关系中,正确的操作语法是?A

A、class Student extends Person {...} B、class Student(Person) {...} C、class Student extends Person() {...} D、class Student extends Person, Job {...}

A B问题:继承语法,不是类型后面添加括号的语法 C问题:继承的父类不能添加括号 D问题:JS中的继承是单继承机制,不能同时继承多个类型

二、简答题

1、观察下面的代码,最终控制台会输出什么结果呢?请说明原因?
代码语言:javascript
复制
let name = "TOM"
function fn() {
    console.log(name)   // ? 
    let name = "JERRY"
}
fn()

输出错误,let声明的变量存在暂时性死区,变量声明之前不能使用该变量

2、梳理下面的代码,最终输出的数据是什么呢?请说明原因?
代码语言:javascript
复制
let person = {'pName': 'OFFCN', 'pAge': 20, 'pGender': 'male'}
let {pName: name, pAge} = person
console.log(name)   // ①
console.log(pName)  // ② 
console.log(pAge)   // ③

① 输出OFFCN,别名输出,给pName的值赋值到了一个名称为name的变量中 ② 错误,一旦出现了别名赋值,原来的属性名称就不能使用 ③ 20 解构赋值中,如果给一个属性添加了别名,属性名称就不能再使用了,所以pName报错

3、解析下面的代码,最终输出什么结果?为什么?
代码语言:javascript
复制
for ( var i = 0; i < 10; i ++ ) {
    setTimeout(function() {
        console.log(i);  // ① 10, 10, 10, 10, 10, 10, 10...
    })
}
for ( let j = 0; j < 10; j ++ ) {
    setTimeout(function() {
        console.log(j);  // ②
    })
}

① 10,var声明的变量的作用域只有全局和局部,for循环中多次循环使用的是同一个作用域空间,setTimeout()延时函数会在循环全部执行完成后输出,循环中最后一次判断时i=10<10跳出循环,此时最终i的值是10; ② 0.1.2.3....9,let声明的变量存在块级作用域,for循环每次循环都是一个独立的作用域,延时函数执行的时候相当于在10个不同的作用域中执行,最终输出了差异化的数据

编程题

1、公司要给员工涨薪,并重新记录到一个新的变量中,请编写代码实现
代码语言:javascript
复制
// 公司员工数据
let emps = [
{name: 'Jams Gosling', job: 'Java工程师', salary: 12000},
{name: 'Guido Van Rossum', job: 'Python工程师', salary: 11000},
{name: 'Brendan Eich', job: 'JavaScript工程师', salary: 12500},
{name: 'John Resig', job: '前端工程师', salary: 12800},
{name: 'Dennis Ritchie', job: 'C工程师', salary: 9000},
{name: 'Bjarne Stroustrup', job: 'C++工程师', salary: 10000},
{name: 'Tim Berners Lee', job: 'WEB工程师', salary: 13000},
{name: 'Alan Cooper', job: 'VB工程师', salary: 8000},
{name: 'Rob Pick', job: 'Go工程师', salary: 13000}
]

请编写代码实现员工的涨薪操作:

解答过程:

代码语言:javascript
复制
var newEmps = emps.map(value=> {
    return {
        ...value,
       salary: value.salary + 1000
}
})
console.log(newEmps) // 涨薪后的数组
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/10/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、多选题
    • 1、关于剩余参数的使用,正确的是?AB
      • 2、声明类型的语法,正确的是?BC
        • 3、关于ES6中constructor()的描述,正确的是?ABD
          • 4、箭头函数的使用,操作语法正确的是?BD
            • 5、箭头函数中的参数的使用,正确的是? BD
              • 6、箭头函数中返回值的操作,正确的是?AD
                • 7、关于类和对象的描述,正确的是?ABD
                  • 8、ES6类型中,对于静态属性和静态函数的操作正确的是?BC
                    • 9、关于函数中使用默认值,操作方式正确的是?ACD
                      • 10、面向对象的继承关系中,正确的操作语法是?A
                      • 二、简答题
                        • 1、观察下面的代码,最终控制台会输出什么结果呢?请说明原因?
                          • 2、梳理下面的代码,最终输出的数据是什么呢?请说明原因?
                            • 3、解析下面的代码,最终输出什么结果?为什么?
                            • 编程题
                              • 1、公司要给员工涨薪,并重新记录到一个新的变量中,请编写代码实现
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档