【问题标题】:A better way to send the arguments as an object literal?将参数作为对象文字发送的更好方法?
【发布时间】:2020-08-06 02:47:34
【问题描述】:

我有这个函数代码,用于在 javascript 中创建代码 sn-p。我想知道我是否可以让它看起来更好,因为我认为我所做的这段代码看起来并不专业。

我想知道是否有更好的方法将多个参数传递给 javascript 中的函数,将参数作为对象文字发送?

非常感谢。

let headings = document.getElementById('headlines');

function create(listLi, txt, p) {
  let li = document.createElement(listLi)
  li.innerHTML = txt;
  p.appendChild(li);
  return li;
}

let ul = create('ul', null, document.body);

【问题讨论】:

  • 固定数量的三个参数将更有效地作为三个单独的参数传递,就像你已经在做的那样。作为对象传递适用于更多参数/选项或许多可选参数/选项。

标签: javascript function ecmascript-6 arguments object-literal


【解决方案1】:

你可以使用解构。

function create({listLi, txt, p}) {
  let li = document.createElement(listLi)
  li.innerHTML = txt;
  p.appendChild(li);
  return li;
}

let ul = create({
  listLi: 'ul',
  txt: null,
  p: document.body
});

【讨论】:

  • 当我用这个解构替换时,我得到一个错误——lmanha_jv_t1.js:15 Uncaught TypeError: Cannot read property 'appendChild' of undefined
  • 我想和你分享完整的代码。链接 - jsfiddle.net/lmanhaes/yqoxcLfb/32
  • 别担心我的朋友。我实际上解决了使 create 函数成为该函数的常量变量的问题。感谢您的帮助。
  • @barmar 这是一个优雅的解决方案 - 非常感谢分享它。
猜你喜欢
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多