大厂前端笔试面试题总结(一)

1.从下列选项中找出正确的打印值

const name="Lydia";
age = 21; 
console.log(delete name);
console.log(delete age);

A.'false','true'
B.'"Lydia"','21'
C.'true','true'
D.'undefined','undefined'

解析:

const name="Lydia";
age = 21; // - window.age=21 非严格模式下
console.log(delete name); // - false 
console.log(delete age); // - true

注:const、let、var声明的变量在使用delete关键字进行删除时是无效的,且其返回值是false。
正确答案:A

2.从下列选项中找出正确的打印值

const user ={name:"Lydia",age:21};
const admin={admin:true,...user};
console.log(admin);

A.{admin:true,user:{name:"Lydia",age:21}}
B.{admin:true,name:"Lydia",age:21}
C.{admin:true,user:["Lydia",age:21]}
D.{admin:true}

解析:

const user ={name:"Lydia",age:21};
const admin={admin:true,...user}; // - {admin:true,name:"Lydia",age:21};
console.log(admin); 

注:...user使用的是ES6的扩展运算符,默认作用是将user的属性展开平铺,并且和admin:true组成一个新的对象。
如果const user ={name:"Lydia",age:21,admin:false};和前面的属性有重名时,...扩展运算符会把前面的属性覆盖掉。打印结果就会为:{admin:false,name:"Lydia",age:21}
正确答案:B

3.从下列选项中找出正确的打印值

// counter.js
let counter =10;
export default counter;
// index.js
import myCounter from "./counter.js";
myCounter += 1;
console.log(myCounter);

A.10
B.11
C.Error
D.NaN

解析:从模块导出的变量是不能被修改的,只能作为一个只读的变量进行其他文件引入使用。
正确答案:C

4.从下列选项中找出正确的打印值

const set = new Set([1,1,2,3,4]);
console.log(set);

A.[1,1,2,3,4]
B.[1,2,3,4]
C.{1,1,2,3,4}
D.{1,2,3,4}

解析:

const set = new Set([1,1,2,3,4]); // - Set是ES6提供的新的数据结构,参数是一个数组的结构,输出是Set的结构
console.log(set);

注:Set具有唯一性,输出时会默认过滤掉重复项。Set是一种新的数据结构并不是数组。
数组的去重、找唯一值都可以利用Set形式
正确答案:D

5.从下列选项中找出正确的打印值

class Dog{
  constructor(name){
    this.name = name;
  }
}

Dog.prototype.bark = function (){
  console.log(`Woof I am ${this.name}`);
}

const pet = new Dog("Mara");
pet.bark();
delete Dog.prototype.bark;
pet.bark();

A."Woof I am Mara",TypeError
B."Woof I am Mara","Woof I am Mara"
C."Woof I am Mara",undefined
D.TypeError,TypeError

解析:

class Dog{
  constructor(name){
    this.name = name;
  }
}

Dog.prototype.bark = function (){
  console.log(`Woof I am ${this.name}`); // this是什么要看执行的时候谁调用了这个函数
}

const pet = new Dog("Mara"); // -{name:'Mara'};
pet.bark();
delete Dog.prototype.bark;
pet.bark();

注:
原型链

正确答案:A

6.从下列选项中找出正确的打印值

(() => {
    let x = (y = 10);
}());
console.log(typeof x);
console.log(typeof y);

A."undefined","number"
B."number","number"
C."object","number"
D."number","undefined"

解析:

// "use strict" ——严格模式
// - 匿名自定义函数
(() => {
// - 函数作用域
    let x = (y = 10);  // - 非严格模式情况下,没有关键字声明的变量,默认为 window 下的属性
}());
console.log(typeof x); // - undefined
console.log(typeof y); // - number

正确答案:A

7.从下列选项中找出正确的打印值

function Car (){
  this.make = "Lamborghini";
  return { make:"Maserrati" };
}
const myCar = new Car();
console.log(myCar.make);

A.Lamborghini
B."Maserati"
C.ReferenceError
D.TypeError

解析:

function Car (){
  this.make = "Lamborghini";
  return { make:"Maserrati" };  // - 返回对象
// return "hello world";  // - 返回基本类型
}
const myCar = new Car(); // - new操作符:规定this指向,指向创建出来的新对象,规定原型链,将这个空对象进行输出;
// - 如果构造函数有返回值且返回值是对象的话,就会忽略前面的操作,不考虑new操作符本身的操作,而直接将返回值作为myCar的值 { make:"Maserrati" };
// - 如果构造函数有返回值且返回值为基本类型的话,就会忽略return返回值,而直接进行new操作符的操作。
console.log(myCar.make);

正确答案:B

8.从下列选项中找出正确的打印值

function greeting() {
  throw "Hello world!";
}
function sayHi() {
  try {
    const data = greeting();
    console.log("It worked!",data);
  } catch (e) {
    console.log("Oh no an error:",e);
  }
}
sayHi();

A. "It worked! Hello world!"
B. "Oh no an error: undefined"
C. SyntaxError: can only throw error objects
D. "Oh no an Error: Hello world!"

解析:

function greeting() {
  throw "Hello world!";  // - 抛出错误字符串
}
function sayHi() {
  try {
    const data = greeting(); // - 已经发生了错误,下面语句不再执行
    console.log("It worked!",data);
  } catch (e) {
    console.log("Oh no an error:",e); // - carch 捕捉try里面的错误,e形参代表错误描述
  }
}
sayHi();

正确答案:D

  1. 从下列选项中找出正确的打印值
const arr = [1,2,3].map(num => {
    if ( typeof num === "number" )  return;
    return num * 2;
});
console.log(arr);

A. []
B. [null,null,null]
C. [undefined, undefined,undefined]
D. [3 × empty]

解析:

const arr = [1,2,3].map(num => {  // - map()本身具有遍历特性,根据条件,生成一个新的数组
    if ( typeof num === "number" )  return; // - return后面没有跟任何值,默认返回undefined
    return num * 2;
});
console.log(arr);

正确答案:C

10.从下列选项中找出正确的打印值

const num = parseInt("7*6",10);
console.log(num);

A. 42
B. "42"
C. 7
D. NaN

解析:
parseInt(string, radix)函数解析字符串并返回整数。

  • radix 参数用于指定使用哪种数字系统,例如基数为 16(十六进制)表示字符串中的数字应从十六进制数解析为十进制数。

  • 如果 radix 参数被省略,JavaScript 假定如下:
    如果字符串以 "0x" 开头,则基数为 16(十六进制) 如果字符串以 "0" 开头,则基数为 8(八进制)。此特性已弃用 如果字符串以任何其他值开头,则基数为 10(十进制)

  • 注意:只返回字符串中的第一个数字!

  • 注释:允许前导和尾随空格。

  • 注释:如果第一个字符不能转换为数字,parseInt() 返回 NaN。

  • 注释:旧浏览器将导致 parseInt("010") 为 8,因为旧版本的 ECMAScript(比 ECMAScript 5 旧)当字符串以 "0" 开头时使用八进制基数 (8) 作为默认值。从 ECMAScript 5 开始,默认值为十进制基数 (10)。

禁止转载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容