前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4 个 JavaScript 最基础的问题 —— Eric Elliott

4 个 JavaScript 最基础的问题 —— Eric Elliott

作者头像
掘金安东尼
发布2022-09-19 10:30:19
2650
发布2022-09-19 10:30:19
举报
文章被收录于专栏:掘金安东尼

theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

本篇参考:https://medium.com/javascript-scene/10-interview-questions-every-javascript-developer-should-know-6fa6bdf5ad95 作者:Eric Elliott


咱就是说,经常看技术博客的同学应该熟悉 Eric Elliott 这位老哥,他致力于 JavaScript 编程、区块链领域的技术博文输出,在 medium 平台上有 10w+ 粉丝。

本瓜发现,对于 JS 编程,这老哥有以下 2 个特点:

  1. 青睐函数式编程;
  2. 排斥 class 类继承,青睐基于原型继承;

对于技术偏好,需辩证的看待。本篇就从他原本 10 个基础面试问题中抽取其中 4 个还不错的问题来看看~

按需所取,冲冲冲ヾ(◍°∇°◍)ノ゙

一、你能说出 JavaScript 的编程范式吗?

好的回答

首先要说出:JavaScript 是一门多范式语言!支持面向过程(命令式)、面向对象(OOP)和函数式编程(声明式)。

其次,最重要的是说出:JavaScript 是通过原型继承(OLOO-对象委托)来实现面向对象(OOP)的;

如果还能说出以下,就更棒了:JavaScript 通过闭包、函数是一等公民、lambda 运算来实现函数式编程的。

如果再进一步,回答出 JavaScript 演进历史,就直接称绝叫好了:JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似。

  • Self 语言 => 基于原型 => JavaScript 用原型实现面向对象编程;
  • Scheme 语言 => 函数式编程语言 => JavaScript 函数式编程;
  • C 语言 => 面向过程 => JavaScript 面向过程编程;

推荐 Eric Elliott 的另外两篇文章,JavaScript 的两大支柱:

  1. 基于原型的继承
  2. 函数式编程

差的回答

不知道编程范式是什么、或者没有提到通过原型实现面向对象、或者没有提到函数式编程;

二、什么是函数式编程?

好的回答

函数式编程是最早出现的编程范式,通过组合运算函数来生成程序。有一些重要的概念:

  • 纯函数
  • 避免副作用
  • 函数组合
  • 高阶函数(闭包)
  • 函数组合
  • 其它函数式编程语言,比如 Lisp、Haskell

本瓜觉得这里最 nb 就是能提到 monad 和延迟执行了~

差的回答

没听说过函数式编程,或者没有提到纯函数、不知道副作用(隐式、显示输出)、更不可能知道高阶函数、闭包的应用、函数封装、函数组合这些了;

三、类继承和原型继承有什么区别?

好的回答

类继承,通过构造函数实现( new 关键字);tips:即使不用 ES6 class,也能实现类继承;

原型继承,实例直接从其他对象继承,工厂函数或 Object.create();

本瓜这里觉得能答出以下就很棒了:

类继承:基于对象复制;

原型继承:基于对象委托;

推荐阅读:

差的回答

类继承和原型继承没有什么差别。

四、面向对象和函数式的优缺点

好的回答

面向对象优点:对象的概念容易理解,方法调用灵活;

面向对象缺点:对象可在多个函数中共享状态、被修改,极有可能会产生“竞争”的情况(多处修改同一对象);

函数式优点:避免变量的共享、修改,纯函数不产生副作用;声明式代码风格更易阅读,更易代码重组、复用;

函数式缺点:过度抽象,可读性降低;学习难度更大,比如 Monad;

差的回答

对二者的优缺点不熟悉;

OK,以上便是本篇分享。点赞关注评论,为好文助力👍 我是掘金安东尼 🤠 100 万阅读量人气前端技术博主 💥 INFP 写作人格坚持 1000 日更文 ✍ 关注我,陪你一起度过漫长编程岁月 🌏

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: smartblue
  • 一、你能说出 JavaScript 的编程范式吗?
    • 好的回答
      • 差的回答
      • 二、什么是函数式编程?
        • 好的回答
          • 差的回答
          • 三、类继承和原型继承有什么区别?
            • 好的回答
              • 差的回答
              • 四、面向对象和函数式的优缺点
                • 好的回答
                  • 差的回答
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档