JavaScript语言精粹-毒瘤、糟粕(应对)

127 阅读2分钟
毒瘤

不使用全局变量
使用块级作用域,不var
return与返回值要位于同一行,否则当自动插入分号后会返回undefined
当对象的属性名与js保留字相同时,无法使用点语法,使用括号表示法
js字符是16位的,Unicode将一对字符视为一个单一的字符,而js将其认为是两个不同的字符
注意typeof对于null和正则返回'object'
parseInt在遇到非数字时会停止,注意parseInt('16')和parseInt('16 jk')均返回16
+运算符会根据参数来判断是数值计算还是字符串拼接
NaN不是数字并且它不等于自身,typeof对于其返回'number',判断值是否为数值类型可用typeof value === 'number' && isFinite(value)
js的数组是伪数组,不需设置维度、不会越界,但性能不如真正的数组,typeof不能区别数组与对象,可用instanceof区别
js的假值:0、NaN、''、false、null、undefined
hasOwnProperty是一个function而不是运算符,不会查询原型链上的属性,可以被替换,不要使用obj.hasOwnProperty=null之类
js的默认对象不是空对象,当原型链可能对我们产生影响时,使用Object.create(null)创建纯净的对象
糟粕

不使用==,而是===;不使用!=,而是!==
不使用with语句
不使用eval语句
适当地使用continue语句能提高可读性,但性能不如重构去除continue的代码
swith中的每个case下注意break,小心穿越到下个case
if语句可以接受单行语句,但此时还是应加上花括号
++、--不够严谨,使得代码过于拥挤,不使用的话代码可以变的更整洁
使用位操作符(& | ^ ~ >> >>> <<)要小心点,&容易误写为&&
function语句定义的函数存在声明提升,使用函数表达式或IIFE替代之
不要使用类型的包装对象,形如new Boolean()、new Number()、new String(),另外也应避免使用new Object()、new Array(),使用{}、[]代替
new运算符后跟的函数应以首字母大写的形式命名
js中的void是一个运算符,接受一个运算数并始终返回undefined,没有作用,应避免使用
---------------------
作者:Kirito丷
来源:CSDN
原文:blog.csdn.net/qq_33576343…
版权声明:本文为博主原创文章,转载请附上博文链接!