函数-JavaScript基础
默认值
技巧:默认值可以是一个函数,当调用者没有提供参数时,调用这个函数。
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 未定义