【发布时间】:2016-12-13 16:33:03
【问题描述】:
我有这个功能:
function callWS(input) {
var output = {
"type" : input["type"] || "",
"mark" : input["mark"] || "",
"model" : input["model"] || "",
"year" : input["year"] || ""
};
return output;
}
我希望用户以多种方式调用此函数:
callWS(); ==> {"type":"","mark":"","model":"","year":""}
callWS({"type":"moto"}); ==> {"type":"moto","mark":"","model":"","year":""}
callWS({"type":"moto","mark":"audi"}); ==> {"type":"moto","mark":"audi","model":"","year":""}
如果参数未定义,则将其初始化为空字符串。目前我的功能在第一种情况下不起作用,但在另一种情况下起作用。
当我像 callWS() 这样称呼它时,我得到:
Uncaught TypeError: Cannot read property 'type' of undefined
老实说,我不知道为什么它适用于 2 和 3 案例,但我需要让它也适用于第一个案例。我知道,如果我使用:
if (input["type"])
可以解决问题,但我需要一个内联解决方案。这有可能吗?
【问题讨论】:
-
您也必须为
input本身提供默认值。只需将input = input || {}添加到callWS的开头 -
将你的函数定义为
function callWS(input = {})。 -
@torazaburo - 该项目不包含 ES6
-
@François Wahl - 不幸的是,该项目不使用 jQuery,它不使用任何外部库。
-
@paulalexandru 因此部分,如果您不使用 jQuery,您可以轻松编写自己的 :) 我在我的示例中也只使用了 JavaScript,但无论如何您已经对其进行了排序 :)
标签: javascript string undefined ternary-operator