[比较运算符&相等]
使用 === 和 !== 而非 == 和 !=,eslint: eqeqeq
条件声明例如 if 会用 ToBoolean 这个抽象方法将表达式转成布尔值并遵循如下规则
代码语言:javascript复制Objects 等于 true
Undefined 等于 false
Null 等于 false
Booleans 等于 布尔值
Numbers 在 0, -0, 或者 NaN 的情况下等于 false, 其他情况是 true
Strings 为 '' 时等于 false, 否则是 true
if ([0] && []) {
// true
// 数组(即使是空数组)也是对象,对象等于true
}
[分号]
Standard 的规范是不使用分号的,我建议统一使用分号,代码更加清晰 关于应不应该使用分号的讨论有很多,好的 JS 程序员应该清楚场景下是一定要加分号的,相信你也是名好的开发者。
代码语言:javascript复制// bad
const test = 'good'
(function () {
const str = 'hahaha'
})()
// good
const test = 'good';
;(() => {
const str = 'hahaha';
})();
[标准特性]
为了代码的可移植性和兼容性,我们应该最大化的使用标准方法,例如优先使用 string.charAt(3) 而不是 string[3]
[eval()]
由于 eval 方法比较 evil,所以我们约定禁止使用该方法
[with() {}]
由于 with 方法会产生神奇的作用域,所以我们也是禁止使用该方法的
[修改内置对象的原型]
不要修改内置对象,如 Object 和 Array
[注释]
[比较运算符&相等]
使用 === 和 !== 而非 == 和 !=,eslint: eqeqeq
条件声明例如 if 会用 ToBoolean 这个抽象方法将表达式转成布尔值并遵循如下规则
代码语言:javascript复制Objects 等于 true
Undefined 等于 false
Null 等于 false
Booleans 等于 布尔值
Numbers 在 0, -0, 或者 NaN 的情况下等于 false, 其他情况是 true
Strings 为 '' 时等于 false, 否则是 true
if ([0] && []) {
// true
// 数组(即使是空数组)也是对象,对象等于true
}
[分号]
Standard 的规范是不使用分号的,我建议统一使用分号,代码更加清晰 关于应不应该使用分号的讨论有很多,好的 JS 程序员应该清楚场景下是一定要加分号的,相信你也是名好的开发者。
代码语言:javascript复制// bad
const test = 'good'
(function () {
const str = 'hahaha'
})()
// good
const test = 'good';
;(() => {
const str = 'hahaha';
})();
为了代码的统一性,函数内部采用 单行注释,工程复杂注释采用多行 如果涉及todo类型的注释,采用 // TODO:
基本用法
ES6 新增了let
命令,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1