js有哪些设计缺陷,怎么规避

142 阅读2分钟

看别人文章之前,我先自我回答一下

  1. 变量提升
  2. 隐式转换
  3. 数字长度
  4. 小数点的加减

好的目前只想到这些

那现在开始找答案

好的,一开始就打错了,问题是,设计上的缺陷,蜜汁微笑

阮一峰来源:(大佬的参考文献是 Javascript语言精粹,我对Javascript的抱怨)

  1. 不适合开发大型程序

    没有名称空间,很难模块化

  2. 非常小的标准库

    标准函数库非常小,只能完成一些基本操作

  3. null和undefined

    null表示空,undefined表示未定义

  4. 全局变量难以控制

    函数里面可以修改全局变量

  5. 自动插入行尾分号

    语句后面会自动加上分号,造成难以发现的错误

  6. 加号运算符

    可作为数字和,又可以作为字符的链接

  7. NaN

    NaN是一个数字,表示超出解释器的极限

  8. 数组与对象的区分

    数组也是对象

  9. == 和 ===

    ==,类型不一致时,会发生自动转换

  10. 基本类型的包装对象

    有三种基本类型,并且都有相应的构建函数,但构建函数生成的却是对象类型,

typeof new Number(123) // 'object'
typeof 123 // 'number'

好的,自己总结一下问题,和解决方法

  1. 不适合开发大型化程序

    我感觉这个CMD和AMD标准出来,应该没有这个疑问了

  2. 非常小的标准库

    es6和lodash可以扩展一下

  3. null和undefined

    赋值的时候,空就设为null,未定义就是undefined

  4. 全局变量难以控制

    这个现象在模块化之后,也得到了很好的控制,CMD和AMD

  5. 自行在行尾加入分号

  6. 加号运算符

  7. NaN

  8. 数组与对象区分

    Object.prototype.toString.call() // "[Object XXXX]"

  9. == 和 ===

    尽量使用===

  10. 基础类型的包装对象

Object.prototype.toString.call()

背一下:

  1. NaN
  2. undefined 和 null
  3. 加号运算符
  4. 对象与数组
  5. 全局变量
  6. 非常小的标准库
  7. 基础类型的包装对象

本来想接着去做面试题的,但是感觉,自己有很多东西欠缺,实在是肚子里没货,所以,我去看书去了,并且接下来是发学习笔记