43 道检验基础的 JavaScript 面试题,mybatis框架工作原理

这是一篇关于JavaScript基础知识的面试题集,涵盖了变量、数据类型、对象、原型链等方面的问题,帮助读者深入理解JavaScript核心概念。文章通过一系列选择题形式的题目,解释了JavaScript中的常见陷阱和重点知识点,例如对象的属性访问、动态类型转换、事件传播等。
摘要由CSDN通过智能技术生成

字符串'Lydia'是一个真值。 我们实际上要问的是“这个真值是假的吗?”。 这会返回false


5. 哪个选项是不正确的?

const bird = {

size: “small”

};

const mouse = {

name: “Mickey”,

small: true

};

  • A: mouse.bird.size

  • B: mouse[bird.size]

  • C: mouse[bird["size"]]

  • D: All of them are valid

答案: A

JavaScript中,所有对象键都是字符串(除了Symbol)。尽管有时我们可能不会给定字符串类型,但它们总是被转换为字符串。

JavaScript解释语句。当我们使用方括号表示法时,它会看到第一个左括号[,然后继续,直到找到右括号]。只有在那个时候,它才会对这个语句求值。

mouse [bird.size]:首先它会对bird.size求值,得到smallmouse [“small”]返回true

但是,使用点表示法,这不会发生。 mouse没有名为bird的键,这意味着mouse.birdundefined。 然后,我们使用点符号来询问sizemouse.bird.size。 由于mouse.birdundefined,我们实际上是在询问undefined.size。 这是无效的,并将抛出Cannot read property "size" of undefined



6. 下面代码的输出是什么?

let c = { greeting: “Hey!” };

let d;

d = c;

c.greeting = “Hello”;

console.log(d.greeting);

  • A: Hello

  • B: undefined

  • C: ReferenceError

  • D: TypeError

答案: A

JavaScript中,当设置它们彼此相等时,所有对象都通过引用进行交互。

首先,变量c为对象保存一个值。 之后,我们将d指定为c与对象相同的引用。

更改一个对象时,可以更改所有对象。


7. 下面代码的输出是什么?

let a = 3;

let b = new Number(3);

let c = 3;

console.log(a == b);

console.log(a === b);

console.log(b === c);

  • A: true false true

  • B: false false true

  • C: true false false

  • D: false true true

答案: C

new Number()是一个内置的函数构造函数。 虽然它看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。

当我们使用==运算符时,它只检查它是否具有相同的值。 他们都有3的值,所以它返回true

译者注: ==会引发隐式类型转换,右侧的对象类型会自动拆箱为 Number类型。

然而,当我们使用===操作符时,类型和值都需要相等,new Number()不是一个数字,是一个对象类型。两者都返回 false


8. 下面代码的输出是什么?

class Chameleon {

static colorChange(newColor) {

this.newColor = newColor;

}

constructor({ newColor = “green” } = {}) {

this.newColor = newColor;

}

}

const freddie = new Chameleon({ newColor: “purple” });

freddie.colorChange(“orange”);

  • A: orange

  • B: purple

  • C: green

  • D: TypeError

答案: D

colorChange方法是静态的。 静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。 由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError


9. 下面代码的输出是什么?

let greeting;

greetign = {}; // Typo!

console.log(greet

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值