Javascript设计之初的缺陷

简介: Javascript设计之初的缺陷

为什么Javascript有设计缺陷?

这里有三个客观原因,导致Javascript的设计不够完善。

  • 设计阶段过于仓促
    Javascript的设计,其实只用了十天。而且,设计师是为了向公司交差,本人并不愿意这样设计
  • 没有先例
    Javascript同时结合了函数式编程和面向对象编程的特点,这很可能是历史上的第一例。
  • 过早的标准化
    Javascript的发展非常快,根本没有时间调整设计。

十个缺陷

这里只说设计之初时,绝大部分已经解决

  • 不适合开发大型程序
  • Javascript,很难模块化;没有如何将代码分布在多个文件的规范;允许同名函数的重复定义,后面的定义可以覆盖前面的定义,很不利于模块化加载。
  • 非常小的标准库
  • Javascript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
  • null和undefined
  • 两者非常容易混淆,但是含义完全不同。
  • 在编程实践中,null几乎没用,根本不应该设计它。
  • 全局变量难以控制
  • 自动插入行尾分号
  • 加号运算符
  • +号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。
  • NaN
  • 与其设计NaN,不如解释器直接报错,反而有利于简化程序。
  • 数组和对象的区分
  • 由于Javascript的数组也属于对象(object),所以要区分一个对象到底是不是数组,相当麻烦
  • == 和 ===
  • ==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。
  • 因此,推荐任何时候都使用"==="(精确判断)比较符。
  • 基本类型的包装对象
  • Javascript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象。
  • 与基本数据类型对应的对象类型,作用很小,造成的混淆却很大。
目录
相关文章
|
前端开发
仿王者荣耀网页-前端网页技术设计完整精美源码HTML+CSS+JS
仿王者荣耀网页-前端网页技术设计完整精美源码HTML+CSS+JS
412 0
仿王者荣耀网页-前端网页技术设计完整精美源码HTML+CSS+JS
|
前端开发 JavaScript
思维-网页技术设计大作业前端HTML+CSS+JS(精美完整)
思维-网页技术设计大作业前端HTML+CSS+JS(精美完整)
184 0
思维-网页技术设计大作业前端HTML+CSS+JS(精美完整)
|
存储 设计模式 JavaScript
【译】设计一个JavaScript插件系统
【译】设计一个JavaScript插件系统
180 0
【译】设计一个JavaScript插件系统
|
Web App开发 前端开发 JavaScript
如何设计动效图——前端SVG JavaScript库Raphaël介绍
如何设计动效图——前端SVG JavaScript库Raphaël介绍
231 0
如何设计动效图——前端SVG JavaScript库Raphaël介绍
|
JavaScript 前端开发
JavaScript设计充值界面样式
JavaScript设计充值界面样式
JavaScript设计充值界面样式
|
前端开发 JavaScript 程序员
基于JavaScript实现网页版仿苹果2022下半年最新UI设计(灵动岛UI设计原理设计)
基于JavaScript实现网页版仿苹果2022下半年最新UI设计(灵动岛UI设计原理设计)
354 0
|
存储 SQL 前端开发
隔壁老王都知道的JavaScript+mysql+HTML+CSS的客户管理系统设计和实现【建议收藏,不然看着看着就不见了
隔壁老王都知道的JavaScript+mysql+HTML+CSS的客户管理系统设计和实现【建议收藏,不然看着看着就不见了
788 0
隔壁老王都知道的JavaScript+mysql+HTML+CSS的客户管理系统设计和实现【建议收藏,不然看着看着就不见了
|
监控 前端开发 JavaScript
如何设计大型网站的前端 JavaScript 框架
有人在知乎上提问“如何设计大型网站的前端 JavaScript 框架”,有不少回答,其中得赞较多的两个回答如下:
228 0
如何设计大型网站的前端 JavaScript 框架
|
机器学习/深度学习 算法 JavaScript
ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)
ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)
ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)
|
移动开发 JavaScript 前端开发
《JavaScript设计与开发新思维》——2.2 HTML5入门
从第一行开始,我们已经说过,简单的HTML5 DOCTYPE将使浏览器处于标准模式,这是我们的第一个目标。接下来是一个html元素,其中包含head和body元素。奇怪的是,HTML5不需要head元素,但是不使用它我感觉不安。
1677 0