大厂比较常见的10个JavaScript笔试题解析,大家能答上来几个?

我们作为JavaScript的开发人员,大家可以下挑战自己!如果你能完美的答对每一个问题那很强,但如果你答错了,并知道为什么答错了,我认为这可以更好的提升自己!希望这些题对大家有帮助!

问题1:数组排序比较

考虑以下数组。在不同的排序条件中会输出什么?

const arr1 = [‘a’, ‘b’, ‘c’];
const arr2 = [‘b’, ‘c’, ‘a’];

console.log(
arr1.sort() === arr1,
arr2.sort() == arr2,
arr1.sort() === arr2.sort()
);
答案: true, true, false

这里有几个概念在起作用。首先,数组 sort 方法对原始数组进行排序,并返回对该数组的引用。这意味着在编写 arr2.sort() 时,将对 arr2 数组对象进行排序。

事实证明,在比较对象时,数组的排序顺序并不重要。由于 arr1.sort() 和 arr1 指向内存中的同一对象,因此第一个相等测试返回 true。第二个比较也是如此:arr2.sort() 和 arr2 指向内存中的同一对象。

在第三个测试中,arr1.sort() 和 arr2.sort() 的排序顺序相同;但是,它们指向内存中的不同对象。因此,第三项测试的结果为 false。

问题2:set 一组对象

考虑下面的对象 Set 集合,它们散布到一个新的数组中。会输出什么?

const mySet = new Set([{ a: 1 }, { a: 1 }]);

const result = […mySet];

console.log(result);
答案:[{a: 1}, {a: 1}]。

尽管 Set 对象确实会删除重复项,但是尽管具有相同的键值对,但我们使用 Set 创建的两个值是对内存中不同对象的引用。这与 {a:1} === {a:1} 为 false 的原因相同。

应该注意的是,如果集合是使用对象变量创建的࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值