在 ECMAScript 2020 中,我们可以为函数的参数设置默认值。这是一项十分方便的功能,可以使我们的代码更加简洁易读。本文将为您详细介绍函数参数中的默认值的使用方法和注意事项。
设置参数默认值的方法
在 ECMAScript 2020 中,设置一个函数参数的默认值的方法十分简单。只需要在参数名后面加上一个等于号,然后再写上默认值即可。例如:
function greet(name = 'world') { console.log(`Hello, ${name}!`); }
在这个函数中,如果函数调用时没有传入参数,它会把参数 name 设为字符串 'world'。如果有传入参数,则使用传入的值。
多个默认值参数
如果函数有多个参数需要设置默认值,可以像下面这样写:
function add(a, b = 0, c = 0) { console.log(a + b + c); }
在这个函数中,第二个和第三个参数都设置了默认值。如果有传入参数,则使用传入的值;否则,使用默认值。
注意事项
默认参数会覆盖 undefined
如果函数参数传递的是 undefined,那么默认参数就会自动生效。例如:
function greet(name = 'world') { console.log(`Hello, ${name}!`); } greet(undefined); // 输出:Hello, world!
在这个例子中,我们传递了 undefined 作为参数,这个参数被默认值 'world' 所覆盖。
默认参数的位置
默认参数必须从最后一个开始设置。这是因为,在函数调用时,参数会按照顺序被赋值,如果默认参数出现在非默认参数的前面,则会出现无法识别的错误。例如:
function test(a = 1, b, c) { console.log(a, b, c); } test(2, 3); // 输出:2 3 undefined test(2, undefined, 3); // 输出:2 1 3 test(undefined, 2, 3); // 输出:1 2 3
在这个例子中,我们可以看到,如果默认参数出现在非默认参数的前面,会出现无法识别的错误。
函数参数默认值的浅拷贝
当我们将一个对象作为函数参数的默认值时,需要注意这个默认值是浅拷贝的。例如:
function test(obj = {}) { obj.a = 1; console.log(obj); } test(); // 输出:{ a: 1 } test(); // 输出:{ a: 1 }
在这个例子中,我们将一个空对象作为函数的默认值,并在函数中修改了这个对象。由于对象默认值是浅拷贝的,所以每次函数调用都会修改同一个对象。
结论
参数默认值是 ECMAScript 2020 中十分方便的一个功能。使用它可以使我们的代码更加简洁易读。但在使用它的时候,需要遵守一定的注意事项,以免出现意外的错误。
示例代码:
-- -------------------- ---- ------- -------- ---------- - -------- - ------------------- ----------- - -------- ------ - - -- - - -- - ------------- - - - --- - -------- ------ - -- -- -- - -------------- -- --- - -------- -------- - --- - ----- - -- ----------------- - -------- -- --------- ------ --------------- -- --------- ------ ------- -- ---- ------ --- -- ---- ------ -- --- -- ---- ------- --- -- ---- - --------- ------- ---------- --- -- ---- - - --------------- -- --- -- ---- - - ------- -- ---- -- - - ------- -- ---- -- - -
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67374996317fbffedf095d4d