js优化小技巧

149 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

js是前端每日开发都要用到的语言,优化js代码,总结一些技巧,写出更简洁的js代码

定义变量时给定类型

定义变量的时候,应该直接指明类型,而不应该让解释器去猜。

var num,str,obj;

声明了3个变量,但是并不知道是什么类型的,应该在声明的时候就指明类型,对于读代码的人和解释器来说,都很方便的知道这个变量的类型和作用。

var num = 0,str = '',obj = null;

过程中不要改变变量的类型

过程中不要修改变量的类型,始终保持变量的类型不变。

var num = 5;
num = '-'+num;

这样的代码不好,不建议修改变量的类型。如果需要修改,可以再定义一个变量,始终保持变量的类型一致。

var num = 5;
var num2 = '-'+5;

减少==的使用

  1. ==是数值的比较,不包含类型,===是类型和数值的比较。
  2. 我们应该做类型的转换,并用===来比较
  3. ==在JSLint的检测中不通过的

举个栗子

null == undefined          // true
'' == '0'                  // false
0  == ''                   // true
0  == '0'                  // true
'\t\r\n' == 0              // true 
new String("abc") == "abc" // true
String("abc") == "abc"     // true 
new Boolean(true) == true  // true 
true == 1                  // true

连等

连等是利用赋值运算表达式会返回所赋的值,并且执行顺序是从右到左的

obj = obj1 = obj2 = {...}

减少魔数

函数的传参应该是明朗,让人一目了然。

getList(true,1)

看到这个代码,我们肯定疑惑这2个参数的意思,不明朗,建议改成下面的方式,先定义好要传参的变量。再传参。

let isScroll = true, score = 1;
getList(isScroll,score)

虽然代码变长了,但是利于维护,并且一目了然。

设默认值

let flag = bar || 'default'; 
// bar 为 undefined, null, "", 0, false, NaN 时最后都得到'default'
[] || "aa"; // []
{} || "aa"; // SyntaxError
({}) || "aa";// Object {}
// NaN 检查是不是“不是一个数字”
isNaN(a);
isNaN(null);// false

函数参数

函数参数不要超过3个,超过的时候,应该封装成对象传入。

getList({
    num: 1,
    num2: 2,
    num3: 3,
})