💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
* [强制] 在相等表达式 中使用类型严格的 === , 仅当判断null或者undefined时,使用==, 使用===可以避免等于判断中隐式的类型转换 ``` // good if (age === 30) { // ...... } // bad if (age == 30) { // ...... } ``` * 不过还是建议尽量使用===,== 可能会带来一些违反直觉的后果。比如我们常使用的对象,有时获取不到而被赋值为undefine的情况。 ``` var obj = undefined; if(obj == null){ console.log("1"); // 执行 } if(obj === null){ console.log("2"); // 不执行 } ``` * [建议] 尽可能使用简洁的表达式。 ``` // 字符串为空 // good if (!name) { // ...... } // bad if (name === '') { // ...... } // 字符串非空 // good if (name) { // ...... } // bad if (name !== '') { // ...... } // 数组非空 // good if (collection.length) { // ...... } // bad if (collection.length > 0) { // ...... } // 布尔不成立 // good if (!notTrue) { // ...... } // bad if (notTrue === false) { // ...... } // null 或 undefined // good if (noValue == null) { // ...... } // bad if (noValue === null || typeof noValue === 'undefined') { // ...... } ``` * [建议] 对于相同变量或表达式的多值条件,用 switch 代替 if。 ``` // good switch (typeof variable) { case 'object': // ...... break; case 'number': case 'boolean': case 'string': // ...... break; } // bad var type = typeof variable; if (type === 'object') { // ...... } else if (type === 'number' || type === 'boolean' || type === 'string') { // ...... } ``` * [建议] 如果函数或全局中的 else 块后没有任何语句,可以删除 else。 ``` // good function getName() { if (name) { return name; } return 'unnamed'; } // bad function getName() { if (name) { return name; } else { return 'unnamed'; } } ```