给定如下函数,为了能够调用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);
}发布于 2016-07-18 16:09:11
您也可以在参数列表中使用对象析构。唯一需要更改的是,您不能通过params对象访问参数:
function foo({text = "Hi", autoHide = false, action = "CLOSE"} = {}) {
console.log(text + " " + autoHide + " " + action)
}
foo({text: "asd"});
见巴贝尔/瑞尔。
请注意析构对象的= {}默认值。这使得在不使用单个参数( foo(); )的情况下调用函数成为可能。
发布于 2016-07-18 16:07:37
您可以使用参数对象析构来实现这一点:
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'https://stackoverflow.com/questions/38441086
复制相似问题