javascript - 将未设置的属性设置为函数中的默认属性?

标签 javascript function javascript-objects destructuring

我是 JS 的新手,我正在尝试学习一些函数基础知识。
我遇到了一个问题,我创建了一个这样的函数:

function someName (element, settings={i:"#1d252c", i2:"#fff"}) {
    .......
}

如果我将函数调用为 someName(element)。 i 和 i2 保留它们的值,但是

如果我像 someName(element,{i:"#3acbda"}) 那样调用它,i 的值确实会改变,但是 i2 的值是未定义的,

那么当设置对象不再是默认值时,如何将默认值分配给属性。
因此,当我仅使用 i 分配设置时,i2 只是默认值“#fff”而不是未定义。

最佳答案

一种方法是在第二个地方使用一个额外的变量,在第三个地方你可以解构。(如果你不想显式定义内部函数)

function someName(element, input,settings={i:"#1d252c", i2:"#fff",...input}){
    console.log(settings.i)
    console.log(settings.i2)
}

someName('hello', {i:'#123'})
someName('hello', {i2:'#123'})

旁注:- 在使用上述技巧时,您需要确保在函数调用中传递的参数总是比我们在函数中定义的少一个。

您还可以在函数和解构中定义设置

function someName(element, input){
  const settings={i:"#1d252c", i2:"#fff",...input}
    console.log(settings.i)
    console.log(settings.i2)
}

someName('hello', {i:'#123'})
someName('hello', {i2:'#123'})

解构的更多用法你可以看here

关于javascript - 将未设置的属性设置为函数中的默认属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616488/

相关文章:

javascript - 在 ECMAScript5 中, "use strict"的范围是什么?

c++ - "Error: function does not take 4 arguments"但确实如此

javascript - 如何使用 onclientclick 调用多个 Javascript 函数

javascript - 获取对象数组中键的名称 - JS

javascript - 可以将边框/描边添加到 Raphael 图像吗?

javascript - AJAX 变量未定义但它是?

python - 尝试将原始输入与函数一起使用

javascript - 查看对象的隐藏属性

Javascript 调用 Function() 来创建一个函数

javascript - 这些函数将以什么顺序执行?