155个JavaScript基础问题(66-75)

本文探讨了JavaScript中的继承机制,如何使用正确的构造函数实现Labradore类继承Dog类,并解析了相关代码的执行结果。还涉及了CommonJS模块导入和模板字符串、类型转换、字符串拼接、生成器函数、模板标记函数等知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

66. 使用哪个构造函数可以成功继承Dog类?

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

class Labrador extends Dog {
  // 1 
  constructor(name, size) {
    this.size = size;
  }
  // 2
  constructor(name, size) {
    super(name);
    this.size = size;
  }
  // 3
  constructor(size) {
    super(name);
    this.size = size;
  }
  // 4 
  constructor(name, size) {
    this.name = name;
    this.size = size;
  }

};

答:B,在子类调用super之前不能访问this,所以1,4会报错,在调用super的时候需要使用到子类的参数,所以2正确。

67. 输出是什么?

// index.js
console.log('running index.js');
import { sum } from './sum.js';
console.log(sum(1, 2));

// sum.js
console.log('running sum.js');
export const sum = (a, b) => a + b;

答:B,此题考查的是CommonJS中require和import的区别,import是在代码编译阶段执行的,所以会先于代码执行,但是require则不同,require是需要的时候才调用。

68. 输出是什么?

console.log(Number(2) === Number(2))
console.log(Boolean(false) === Boolean(false))
console.log(Symbol('foo') === Symbol('foo'))

答:B,本题意在考查我们对Symbol的认知,每个Symbol都是唯一的,给Symbol传参数,只是对Symbol的描述。

69. 输出是什么?

const name = "Lydia Hallie"
console.log(name.padStart(13))
console.log(name.padStart(2))

答:C,本题意在考查padStart的用法,这个API的作用是当参数大于字符串的长度时,多几个就在字符串的左侧添加几个空格,但是如果参数小于字符串的长度,则不添加。

70. 输出是什么?

console.log("🥑" + "💻");

答:A,本题就是考查字符串拼接,不要被图画吓到。

71. 如何能打印出console.log后面的注释值。

function* startGame() {
  const 答案 = yield "Do you love JavaScript?";
  if (答案 !== "Yes") {
    return "Oh wow... Guess we're gone here";
  }
  return "JavaScript loves you back ❤️";
}

const game = startGame();
console.log(/* 1 */); // Do you love JavaScript?
console.log(/* 2 */); // JavaScript loves you back ❤️

答:C,本题主要考察的是生成器函数的用法和yield关键字,所以本题选C,不理解的可以查查生成器函数的用法。

72. 输出是什么?

console.log(String.raw`Hello\nworld`);

答:C,本题意在考查模板标记函数和String.raw这个API的用法,我们其实只需要知道String.raw会将\n,\t等打印出来,所以选C。

73. 输出是什么?

async function getData() {
  return await Promise.resolve("I made it!");
}

const data = getData();
console.log(data);

答:C,通过上述方法返回的是一个等待态的Promise。

74. 输出是什么?

function addToList(item, list) {
  return list.push(item);
}

const result = addToList("apple", ["banana"]);
console.log(result);

image.png

答:B,此题意在考查push方法返回值是什么,我一直以为push方法返回的是undefined,其实是添加元素后数组的长度,所以本题选B。

75. 输出是什么?

const box = { x: 10, y: 20 };

Object.freeze(box);

const shape = box;
shape.x = 100;
console.log(shape)

image.png

答:B,本题意在考查Object.freeze的用法,此方法见名思意,是将对象进行冻结,使得无法对冻结的对象添加、修改、删除属性操作,在非严格模式下选B,但是在严格模式下会出现TypeError。

题目来源

https://github.com/lydiahallie/javascript-questions

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值