看完这几道 JavaScript 面试题,让你与考官对答如流(中)

由于篇幅过长,我将此系列分成上中下三篇,上篇:

看完这几道 JavaScript 面试题,让你与考官对答如流(上)

  • 26. 什么是IIFE,它的用途是什么/p>

  • 27. Function.prototype.apply方法的用途是什么/p>

  • 28. Function.prototype.call方法的用途是什么/p>

  • 29. Function.prototype.apply 和 Function.prototype.call 之间有什么区别/p>

  • 30. Function.prototype.bind的用途是什么/p>

  • 31. 什么是函数式编程JavaScript的哪些特性使其成为函数式语言的候选语言/p>

  • 32. 什么是高阶函数/p>

  • 33. 为什么函数被称为一等公民/p>

  • 34. 手动实现`Array.prototype.map`方法

  • 35. 手动实现`Array.prototype.filter`方法

  • 35. 手动实现`Array.prototype.reduce`方法

  • 37. arguments 的对象是什么/p>

  • 38. 如何创建一个没有 prototype(原型) 的对象/p>

  • 39. 为什么在调用这个函数时,代码中的`b`会变成一个全局变量/p>

  • 40. ECMAScript是什么/p>

  • 41. ES6或ECMAScript 2015有哪些新特性/p>

  • 42. `var`,`let`和`const`的区别是什么

  • 43. 什么是箭头函数/p>

  • 44. 什么是类/p>

  • 45. 什么是模板字符串/p>

  • 46. 什么是对象解构/p>

  • 47. 什么是 ES6 模块/p>

  • 48. 什么是`Set`对象,它是如何工作的/p>

  • 49. 什么是回调函数/p>

  • 50. Promise 是什么/p>

26. 什么是 IIFE,它的用途是什么/h3>

IIFE或立即调用的函数表达式是在创建或声明后将被调用或执行的函数。创建IIFE的语法是,将包裹在在括 内,然后再用另一个括 调用它,如:

这些示例都是有效的IIFE。倒数第二个救命表明我们可以将参数传递给IIFE函数。最后一个示例表明,我们可以将的结果保存到变量中,以便稍后使用。

IIFE的一个主要作用是避免与全局作用域内的其他变量命名冲突或污染全局命名空间,来个例子。

假设我们引入了一个的链接,它提供了一些我们在代码中使用的全局函数,但是这个库有两个方法我们没有使用:和,因为这些方法都有。我们想实现自己的和方法。

解决此问题的一种方法是直接覆盖:

当我们使用这个解决方案时,我们覆盖了库提供给我们的那两个方法。

另一种方式是我们自己改名称:

当我们使用这个解决方案时,我们把那些函数调用更改为新的函数名。

还有一种方法就是使用IIFE

在此解决方案中,我们要声明了 变量,用来保存IIFE执行的结果,该函数返回一个包含两个方法和的对象。

IIFE 还可以用来解决一个常见的面试题:

假设我们有一个带有类的元素,它有个子元素。当我们单击单个元素时,打印对应的下标值。但在此外上述代码不起作用,这里每次点击 打印 的值都是,这是由于闭包的原因。

闭包只是函数记住其当前作用域,父函数作用域和全局作用域的变量引用的能力。当我们在全局作用域内使用关键字声明变量时,就创建全局变量。因此,当我们单击元素时,它将打印,因为这是稍后在回调函数中引用它时的值。

使用 IIFE 可以解决此问题:

该解决方案之所以行的通,是因为IIFE会为每次迭代创建一个新的作用域,我们捕获的值并将其传递给参数,因此调用IIFE时,每次迭代的值都是不同的。

27. Function.prototype.apply 方法的用途是什么/h3>

方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。

方法的作用和 方法类似,区别就是方法接受的是参数列表,而方法接受的是一个参数数组。

28. `Function.prototype.call` 方法的用途是什么/h3>

方法使用一个指定的 值和单独给出的一个或多个参数来调用一个函数。

注意:该方法的语法和作用与 方法类似,只有一个区别,就是 方法接受的是一个参数列表,而 方法接受的是一个包含多个参数的数组。

29. Function.prototype.apply 和 Function.prototype.call 之间有什么区别/h3>

方法可以在使用一个指定的 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法。方法类似于,不同之处仅仅是接受的参数是参数列表。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月8日
下一篇 2020年1月8日

相关推荐