为什么现在的前端学JavaScript要学那么多的版本,并且一年一大更,半年一小更,还要用到很多js的库、模块化工具
就是因为JavaScript的设计缺陷
这篇主要是参考《JavaScript语言精髓》(JavaScript: The Good Parts),总结的非常到位
大型程序不宜
Javascript没有名称空间(namespace),很难模块化
标准库小
Javascript提供的标准函数库非常小,只能完成一些基本操作
null和undefined
传说是道格拉斯喝醉酒的时候,重复了发明了这两个数据类型,null和undefined可以认为是一样的
全局变量神出鬼没
函数内部可以生成全局变量
|
|
行尾分号自动加
Javascript的所有语句,都可以不用以分号结尾
比如,下面这个函数根本无法达到预期的结果,返回值不是一个对象,而是undefined
|
|
原因是解释器自动在return语句后面加上了分号
|
|
加号运算符
+号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接
|
|
NaN
NaN是一种数字,表示超出了解释器的极限。它有一些很奇怪的特性
|
|
数组和对象的区分
数组也是对象,要确认对象是不是数组比较麻烦
|
|
== 和 ===
==会自动转换数据类型,得到的直觉不符合常理
|
|
基本类型的包装对象
Javascript有三种基本数据类型:字符串、数字和布尔值。它们都有相应的建构函数,可以生成字符串对象、数字对象和布尔值对象
|
|
与基本数据类型对应的对象类型,作用很小,造成的混淆却很大
|
|
虽然JavaScript缺陷很多,但是ES6及很多库已经很多解决了这些缺陷的问题,完善了不少。并且JavaScript是浏览器唯一的编程语言,将来一定是随着时代发展不断进步