默认值
技巧:默认值可以是一个函数,当调用者没有提供参数时,调用这个函数。
function dd(a, b, c = show()) {
}
function show() {
console.log("请提供三个参数");
}
dd(1); // 请提供三个参数
dd(1, 2); // 请提供三个参数
dd(1, 2, 3);
空值合并运算符
空值合并运算符返回第一个 ** 已定义 ** 的值。
逻辑或运算符返回第一个 ** 真 ** 值。
以前写赋值时,可能需要这么写:
result = (a !== null && a != undefined) ? a : b
result = a ? a : b // 如果 a 是 0 的话就赋值 b 给 result 了
result = a || b // 如果 a 是 0 的话就赋值 b 给 result 了
就是说,逻辑或无法区分 false, 0, "", null, undefined
,他们对逻辑或来说都是假值。a ?? b
的运算结果:当 a 不是 undefined 或者 null 时,就会返回左边参数 a,否则返回右边的参数 b。
在搭配其他运算符时,需要给空值运算符加上括号。
函数命名
函数属于行为。所以函数名包含动词。一般做法是动词前缀。
getXxx 返回一个值
calcXxx 计算任务
createXxx 创建东西
checkXxx 检查内容并返回布尔值
一个函数对应一个行为
函数表达式 VS 函数声明
- 函数表达式是在代码执行到达函数表达式时被创建,并且仅从那一刻起才可用。
- 而在函数声明在声明之前,它就可以被调用。
sm(); // OK
function sm() {}
bds(); // 报错
let bds = function() {};
之所以加了个函数表达式,是因为,有时函数声明不能做到的,函数表达式可以做到。
let age = 24;
if (age < 30) {
function jiaban() {
console.log("加班");
}
} else {
function jiaban(){
console.log("退休");
}
}
jiaban(); // 错误,jiaban 未定义
这是因为,函数声明作用域时代码块。
这时可以在代码块外面加一个变量,指向函数表达式。
let age = 24;
let jiaban;
if (age < 30) {
jiaban = function () {
console.log("加班");
}
} else {
jiaban = function(){
console.log("退休");
}
}
jiaban(); // 错误,jiaban 未定义
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。