当前位置: 首页 > 科技观察

问题来了!5个JavaScript问题和答案来测试你的技能熟练度

时间:2023-03-21 14:15:26 科技观察

今天我们将继续学习我们钟爱的JavaScript语言,在这篇文章中,我们将通过回答一些JavaScript小挑战来测试我们的技能。尽管我在每个问题的最后都给出了解释和答案,但请先尝试自己找出答案,然后再根据我的问题验证你的答案。问题一:数组排序比较考虑以下数组和条件,你认为结果是什么?回答现在我们知道了结果,让我们解释一下原因。对于前两个输出,解释很简单,sort()方法对原始数组进行排序并返回对同一个对象arr1.sort()的引用,所以实际上是对同一个对象arr1的引用。对于第三次输出,arr1.sort()===arr2.sort()即使每个数组上的元素相同,===也不会测试数组的元素,而是每个对象的引用(在这个大小写不同),因此返回false。问题2:对象可变性对于这种情况,我想模拟一个代表作者及其网站信息的对象。然后我们使用此方法Object.freeze()使其无法更改,并对其进行测试。你觉得结果如何?回答如果你答对了,恭喜你!如果没有,请不要担心。让我们解释一下发生了什么。当我们调用该方法时,Object.freeze()冻结了对象,这意味着它不能再被改变;冻结对象可以防止向其添加新属性,也可以防止删除或更改现有属性。但是为什么我们能够改变对象呢?实际上我们没有,这就是诀窍。在可变的作者站点中,是出于各种目的对对象的引用,并且该引用在整个代码中保持不变。我们确实更改了网站对象中的一个属性,但这并没有更改对对象本身的引用。如果您想知道如果您尝试更改author对象的属性会发生什么,有两个可能的答案。让我们从第一种开始:在第一种情况下,即使我们更改了属性,名称并没有真正改变,没有错误,没有警告,就像那行代码从未执行过一样。第二个答案是在严格模式下在严格模式下,如果你试图修改一个冻结的对象,你会得到一个TypeError。比以前好多了。问题3:递归给定以下递归函数,当我们以“blog”作为参数调用它时,你认为结果会是什么?Answer对于这道题,没有什么技巧,只是递归函数的基本用法,递归函数会一直调用自己,直到字符串中只有一个元素到str为止,此时打印出原字符串的最后一个字符g。递归函数很重要,可以以非常有趣的方式解决问题,因此理解它们很重要。问题4:范围您认为控制台的输出是什么,为什么?答案但是,如何在封闭函数的范围之外定义b呢?诀窍至多是一个全局变量。但仍处于关闭功能之下。请注意,在严格模式下,这将产生ReferenceError:bisnotdefined。问题5:关于闭包的更多信息下面的代码片段是一个实际流行的面试问题,问题是,你认为输出会是什么?答案正确吗?这样做的原因是循环中执行的每个函数都会在整个循环完成后执行,因此所有函数都会引用i中存储的最后一个值,即5。闭包可以通过为每次迭代,将变量的每个唯一值存储在其范围内,如下所示:特别有趣的文章,我以后可能会做更多这样的文章。