ES6 里面的函数默认参数详解
在 ES6 中,我们允许为函数的参数设置默认值,从而使得函数调用者在某些情况下可以省略掉某些参数的值。本篇文章将详细讲解 ES6 中函数默认参数的相关知识点,并提供一些实例代码来帮助大家更好地理解。
函数默认参数的基本语法
在 ES6 中,我们可以使用如下语法来为函数参数设置默认值:
function func(param1=defaultVal1, param2=defaultVal2, ...) { // 函数体 }
在上述代码中,我们使用了 =
运算符来为参数 param1
和 param2
设置了默认值 defaultVal1
和 defaultVal2
。当函数调用者没有给这些参数传递值时,函数将会默认使用这些值。
示例代码:
function greet(name, greeting='Hi') { console.log(`${greeting}, ${name}!`); } greet('Jack'); // 输出 "Hi, Jack!" greet('Rose', 'Hello'); // 输出 "Hello, Rose!"
在上述代码中,我们定义了一个名为 greet
的函数,它接受两个参数:name
表示要打招呼的人的名字,greeting
表示打招呼的话语。当函数调用者没有传递 greeting
参数的值时,默认为 'Hi'
。这意味着我们可以在调用 greet
函数时省略掉 greeting
参数。
函数默认参数对于 undefined 的判断
当函数的参数值被传递进来时,我们需要注意的是参数值为 undefined
和参数值没有被传递进来这两种情况是不同的。
示例代码:
function func(param = 'default') { console.log(param); } func(); // 输出 "default" func(undefined);// 输出 "default" func(null); // 输出 null
在上述代码中,我们定义了一个名为 func
的函数,并为其设置了一个默认参数 param
,默认值为 'default'
。在函数调用时,我们可以看到传递不同的参数值会引起不同的输出。特别是,当我们向 func
函数传递 undefined
进行调用时,将输出默认值。
函数默认参数按值传递
与 JavaScript 中的其他函数参数类似,函数默认参数也是按值传递的。这意味着如果我们将一个对象作为函数的默认参数值传递进去,那么函数内部使用的对象值与函数外部的对象是不同的。
示例代码:
// javascriptcn.com 代码示例 function func(param={}) { param.x = 1; console.log(param); } func(); // 输出 {x: 1} func(); // 输出 {x: 1} let myObj = {}; func(myObj); // 输出 {x: 1} console.log(myObj); // 输出 {}
在上述代码中,我们定义了一个名为 func
的函数,并为其设置了一个默认参数 param
,默认值为一个空对象。在函数内部,我们将 param
对象的 x
属性值修改为了 1
。当我们第一次调用 func
函数时,输出的是 {x: 1}
。当我们第二次调用 func
函数时,输出的仍然是 {x: 1}
。这是因为函数内部使用的对象值与函数外部的对象是不同的。最后,我们在第三次调用 func
函数时传递了一个自定义的对象 myObj
进去,输出的是 {x: 1}
。然而,我们注意到函数外部的对象仍然是一个空对象。这表明在函数内部修改对象的属性值不会影响到函数外部对象的值。
总结
在 ES6 中,我们可以使用函数默认参数的语法来使函数的调用更加灵活。默认值是参数没有被传入时使用的值。通过本篇文章,我们学会了如何设置函数的默认参数,了解了函数默认参数的在 undefined 和对象参数值的场景下的表现形式,并知道函数默认参数是按值传递的。我们希望这篇文章可以帮助大家更好地理解 ES6 中函数默认参数的相关知识点,以便进一步加深对 JavaScript 语言的掌握程度。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6534e5877d4982a6eba646c8