给定如下函数,为了能够调用showToast({ text: "some text"})
并仍然获得params.autoHide
和params.action
的默认值,使用正确的语法是什么?
function showToast (params = {text: 'Something happened!', autoHide: false, action: 'CLOSE'}) {
//noinspection JSUnresolvedFunction
const toast = $mdToast.simple()
.textContent(params.text)
.position('top right')
;
if (!params.autoHide) {
toast.hideDelay(false);
}
if (params.action) {
//noinspection JSValidateTypes
toast.action(params.action); // label for close btn
}
$mdToast.show(toast);
}
答案 0 :(得分:2)
您也可以在参数列表中使用对象解构。唯一改变的是您不能通过params
对象访问参数:
function foo({text = "Hi", autoHide = false, action = "CLOSE"} = {}) {
console.log(text + " " + autoHide + " " + action)
}
foo({text: "asd"});
请参阅babel/repl。
请注意解构对象的= {}
默认值。这使得可以在没有单个参数的情况下调用该函数:foo();
。
答案 1 :(得分:1)
您可以使用参数对象解构来实现此目的:
function showToast({text = 'Something happened!', autoHide = false, action = 'CLOSE'} = {}) {
//noinspection JSUnresolvedFunction
const toast = $mdToast.simple().textContent(text).position('top right');
if (!autoHide) {
toast.hideDelay(false);
}
if (action) {
//noinspection JSValidateTypes
toast.action(action); // label for close btn
}
$mdToast.show(toast);
}
showToast({ text: "some text" }) // defaults autoHide to false, action to 'CLOSE'