关于javascript:Javascript-的优缺点以及重点

5次阅读

共计 1569 个字符,预计需要花费 4 分钟才能阅读完成。

重点:范式

此文件夹保留的是,JS 真正的、特有的(只管多是抄过来的)个性和能力。只有这些基本的设计不变,那么它们之上的 API 就不会有太偏移的倒退。

<br/>

👶 Splice

与其说我爱 Javascript,不如说我恨它。它是 C 语言和 Self 语言一夜情的产物。——Brendan Eich

十八世纪英国文学家约翰逊博士说得好:它的优良之处并非原创,它的原创之处并不优良。当今作为最宏大的用户数的语言,只管有“绑架业界”的嫌疑,还是请不要希图用 PHP、WebAssembly 去把它“连根拔起”。把它修补、裁减才是最有价值的。

<br/>

🙉 OOP + FP

Javascript 有两个罕用的范式:

  1. OOP。JS 自身就是仿照 Java 来建造的,而 Java 的强项就是 OO。其弱小不需赘述了,它是模块化编程的根底,树形构造的代码能够在复杂度可控的前提下有限扩大。
  2. 函数式编程。它是面向数学的形象,将计算形容为一种 表达式求值(参数进入表达式后失去返回值),其实,函数式程序就是一个表达式。

    • 函数是第一公民
    • 函数应该是纯函数,没有副作用,其后果惟一

OOP 无需赘述,前端们开发的环境 window 和 JS 自身就是对象,用的 MVC 框架也是对象。至于函数式,常见的业务根本都不能满足纯函数的条件,因为咱们无时无刻不在操作一些全局变量和内部对象。Hooks 则是

优缺点 & 历史

先看看历史,这是造成 JS 晚期被开发者诟病的毛病的起源。因为历史不是重点,就简略概括下:

  • 背景:网景公司拥抱 JAVA

    • 平台

      • 浏览器:C ++
      • 服务器:(浏览器 V8 core)Nodejs
    • 骨架、精神与机能

      • HTML:标记语言(计算机科学家 Tim Berners-Lee 创造,形容文档构造,也算是计算机语言)
      • CSS:层叠样式表(同是万维网发明者 1990 年发明,通过 4 年后走出实验室)
      • JS:编程语言(图灵齐备)
  • 作者:Brendan Eich 对 JAVA 没有趣味,花了 10 天设计进去 JS
  • 后果:混合产物,函数式编程(作者特长)+ 简化的面向对象(公司要求模拟 JAVA),总和 4 种语言的专长

    • (1)借鉴 C 语言的根本语法;
    • (2)借鉴 Java 语言的数据类型和内存治理;
    • (3)借鉴 Scheme 语言,将函数晋升到 ” 第一等公民 ”(first class)的位置;
    • (4)借鉴 Self 语言,应用基于原型(prototype)的继承机制。
  • 将来

    • 全畛域
    • 网页
    • 后端
    • 人工智能
    • 物理引擎
    • 网页游戏
    • AR、VR
  • 全功能

    • 平安(劫持)
    • 多端适配
    • 算法问题(比方最短门路)
    • 形象问题(投影仪模型)
    • 数据可视化(须要数学与物理常识)

长处

  • 解释性语言

    • 不须要先编译。间接输出到浏览器,就能逐行解释
    • 弱类型。变量能间接扭转类型
    • 平安,不能够批改文件
    • 作用域互借:灵便(调用对象不便)
  • 浏览器

    • 多线程:简单(留神渲染、网络申请等线程的期待问题,然而 JS 是单线程的)
    • 事件驱动
    • 跨平台,前后端兼吃

毛病

缺点阐明解决
【命名空间】没有函数和变量都能够笼罩严格模式的引入
【规范库】比拟小 ES 补充
【null】简直没有用和对象微妙的关系
【NaN】的存在超出解释器的极限,typeof NaN === ‘number’Number.isNaN()
【全局变量】任意操作所有文件均可写入IIFE、CommonJS
【编码分号】主动插入 IDE 能够解决掉
【加号】微妙类型性能数字 + 字符 =「拼接」性能
【数组】类型难以判断 大量严格判断函数
【包装对象】混同办法生成对象,前面不留神会忘掉

总结一下,毛病如下:

  • 弱类型:类型难判断,且容易调换
  • 谬误类型:null、NaN 等判断微妙
  • 不够残缺

随着时间推移,咱们慢慢看不到它们缺点造成的问题了。类型方面的缺点有 TypeScript 进行解决,语法不残缺则由补丁 ECMAScript 每年进行修复。


Ref

  • Javascript 诞生记 – 阮一峰的网络日志
  • JavaScript 算是严格意义上的编程语言吗?– 知乎

    本文由博客一文多发平台 OpenWrite 公布!

正文完
 0