设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

JavaScript九大面试问题集锦,助你顺利通关!(3)

发布时间:2019-07-19 09:47 所属栏目:21 来源:读芯术
导读:这违背了函数式编程的原理,因为函数的结果因Context调用方法而异。 重新编写上面的代码,以便结果更易预测: constnum={ val:1 }; constadd5=()=Object.assign({},num,{val:num.val+5});constmultiply5=()=Object.

这违背了函数式编程的原理,因为函数的结果因Context调用方法而异。 重新编写上面的代码,以便结果更易预测:

  1. const num = { 
  2.  val: 1 
  3. }; 
  4. const add5 = () => Object.assign({}, num, {val: num.val + 5}); const multiply5 = () => Object.assign({}, num, {val: num.val * 5}); 

现在,num.val的值仍然为1,无论Context调用的方法如何,add5(num)和multiply5(num)将始终输出相同的结果。

8. 命令式和声明性编程之间有什么区别?

关于命令式编程和声明式编程的区别,可以以OOP(面向对象编程)和FP(函数式编程)为参考。

这两种是描述多种不同编程范式共有特征的概括性术语。FP(函数式编程)是声明性编程的一个范例,而OOP(面向对象编程)是命令式编程的一个范例。

从基本的意义层面,命令式编程关注的是如何做某事。它以最基本的方式阐明了步骤,并以for和while循环,if和switch陈述句等为特征。

  1. const sumArray = array => { 
  2.   let result = 0; 
  3.   for (let i = 0; i < array.length; i++) { 
  4.      result += array[i] 
  5.   }; 
  6.   return result; 

相比之下,声明性编程关注的是做什么,它通过依赖表达式将怎样做抽出来。这通常会产生更简洁的代码,但是在规模上,由于透明度低,调试会更加困难。

这是上述的sumArray()函数的声明方法。

  1. const sumArray = array => { return array.reduce((x, y) => x + y) }; 

9. 是什么基于原型的继承?

最后,要讲到的是基于原型的继承。面向对象编程有几种不同的类型,JavaScript使用的是基于原型的继承。该系统通过使用现有对象作为原型,允许重复运行。

即使是首次遇到原型这一概念,使用内置方法时也会遇到原型系统。 例如,用于操作数组的函数(如map,reduce,splice等)都是Array.prototype对象的方法。实际上,数组的每个实例(使用方括号[]定义,或者 -不常见的 new Array())都继承自Array.prototype,这就是为什么map,reduce和spliceare等方法都默认可用的原因。

几乎所有内置对象都是如此,例如字符串和布尔运算:只有少数,如Infinity,NaN,null和undefined等没有类或方法。

在原型链的末尾,能发现 Object.prototype,几乎JavaScript中的每个对象都是Object的一个实例。比如Array. prototype和String. prototype都继承了Object.prototype的类和方法。

要想对使用prototype syntax的对象添加类和方法,只需将对象作为函数启动,并使用prototype关键字添加类和方法:

  1. function Person() {}; 
  2. Person.prototype.forename = "John"; 
  3. Person.prototype.surname = "Smith"; 

是否应该覆盖或扩展原型运算?

可以使用与创建扩展prototypes同样的方式改变内置运算,但是大多数开发人员(以及大多数公司)不会建议这样做。

如果希望多个对象进行同样的运算,可以创建一个自定义对象(或定义你自己的“类”或“子类”),这些对象继承内置原型而不改变原型本身。如果打算与其他开发人员合作,他们对JavaScript的默认行为有一定的预期,编辑此默认行为很容易导致出错。

总的来说,这些问题能够帮助你更好理解JavaScript,包括其核心功能和其他鲜为人知的功能 ,并且望能助你为下次的面试做好准备。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读