1.避免声明全局变量
2.始终声明局部变量
所有在函数中使用的变量应该被声明为局部变量。
局部变量必须通过 `var` 关键词来声明,否则它们将变成全局变量。
严格模式不允许未声明的变量。
3.在顶部声明(先声明,再使用)
// 在顶部声明
let firstName, lastName, price, discount, fullPrice;
// 稍后在使用
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;
也可以用于循环变量:
// 在顶部声明
var i;
// 稍后使用
for (i = 0; i < 5; i++) {}
// 默认地,JavaScript 会将所有声明移至顶部(JavaScript hoisting)。
4.声明并初始化
let firstName = "zhangsan",
lastName = '',
address = null,
gender = 'male',
education = null
const age = 20
5.请尽量不要使用 new Object()
请使用 {} 来代替 new Object()
请使用 "" 来代替 new String()
请使用 0 来代替 new Number()
请使用 false 来代替 new Boolean()
请使用 [] 来代替 new Array()
请使用 /()/ 来代替 new RegExp()
```javascript
const regExp = /^...$/ // 声明一个匹配模式
regExp.test('...') // 调用test()方法
// 手机号码:/^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/
// 身份证号码:/^\d{17}([0-9]|X|x)$/
请使用 function (){}来代替 new Function()
let x1 = {}; // 新对象
const x2 = “”; // 新的原始字符串值
let x3 = 0; // 新的原始数值
let x4 = false; // 新的原始布尔值
const x5 = []; // 新的数组对象
const x6 = /()/; // 新的正则表达式
let x7 = function(){}; // 新的函数对象
6.明白显式,隐式类型转换
```javascript
显式类型转换: `parseInt(), parseFloat(), Number(), String(), Boolean(), toString()`等
隐式类型转换:`!`逻辑非操作符(`-0, +0, NaN, '', false, undefined, null`,等都会转换为false),`==`(相等运算),`+` (加法运算符)
7.使用 ===
(严格相等) 而不是==
(===
不会进行隐式类型转换,==
会隐式类型转换)
8.使用默认参数
// 如果调用函数时缺少一个参数,那么这个缺失参数的值会被设置为 undefined。
// undefined 值会破坏您的代码。为参数设置默认值是一个好习惯
function add (x, y = 5) {
return x + y
}
add(10) // 15
9.用 default 来结束 switch
请使用使用 default 来结束您的 switch 语句。即使您认为没有这个必要
switch (new Date().getDay()) {
case 0:
day = 'Sunday'
break
case 1:
day = 'Monday'
break
case 2:
day = 'Tuesday'
break
case 3:
day = 'Mednesday'
break
case 4:
day = 'Thursday'
break
case 5:
day = 'Friday'
break
case 6:
day = 'Monday'
break
default
day = 'invalid day number'
}
- 使用箭头函数
()=>
(箭头函数的作用域是其父级函数的作用域,箭头函数的作用域是静态的, 代码简洁,优雅)