看别人文章之前,我先自我回答一下
- 变量提升
- 隐式转换
- 数字长度
- 小数点的加减
好的目前只想到这些
那现在开始找答案
好的,一开始就打错了,问题是,设计上的缺陷,蜜汁微笑
阮一峰来源:(大佬的参考文献是 Javascript语言精粹,我对Javascript的抱怨)
-
不适合开发大型程序
没有名称空间,很难模块化
-
非常小的标准库
标准函数库非常小,只能完成一些基本操作
-
null和undefined
null表示空,undefined表示未定义
-
全局变量难以控制
函数里面可以修改全局变量
-
自动插入行尾分号
语句后面会自动加上分号,造成难以发现的错误
-
加号运算符
可作为数字和,又可以作为字符的链接
-
NaN
NaN是一个数字,表示超出解释器的极限
-
数组与对象的区分
数组也是对象
-
== 和 ===
==,类型不一致时,会发生自动转换
-
基本类型的包装对象
有三种基本类型,并且都有相应的构建函数,但构建函数生成的却是对象类型,
typeof new Number(123) // 'object'
typeof 123 // 'number'
好的,自己总结一下问题,和解决方法
-
不适合开发大型化程序
我感觉这个CMD和AMD标准出来,应该没有这个疑问了
-
非常小的标准库
es6和lodash可以扩展一下
-
null和undefined
赋值的时候,空就设为null,未定义就是undefined
-
全局变量难以控制
这个现象在模块化之后,也得到了很好的控制,CMD和AMD
-
自行在行尾加入分号
-
加号运算符
-
NaN
-
数组与对象区分
Object.prototype.toString.call() // "[Object XXXX]"
-
== 和 ===
尽量使用===
-
基础类型的包装对象
Object.prototype.toString.call()
背一下:
- NaN
- undefined 和 null
- 加号运算符
- 对象与数组
- 全局变量
- 非常小的标准库
- 基础类型的包装对象
本来想接着去做面试题的,但是感觉,自己有很多东西欠缺,实在是肚子里没货,所以,我去看书去了,并且接下来是发学习笔记