函数 - JavaScript 基础

  1. 默认值
    1. 空值合并运算符
  2. 函数命名
  3. 函数表达式 VS 函数声明

默认值

技巧:默认值可以是一个函数,当调用者没有提供参数时,调用这个函数。

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 未定义

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间