pau*_*dru 4 javascript string ternary-operator undefined
我有这个功能:
function callWS(input) {
var output = {
"type" : input["type"] || "",
"mark" : input["mark"] || "",
"model" : input["model"] || "",
"year" : input["year"] || ""
};
return output;
}
Run Code Online (Sandbox Code Playgroud)
我希望用户通过多种方式调用这个函数:
callWS(); ==> {"type":"","mark":"","model":"","year":""}
callWS({"type":"moto"}); ==> {"type":"moto","mark":"","model":"","year":""}
callWS({"type":"moto","mark":"audi"}); ==> {"type":"moto","mark":"audi","model":"","year":""}
Run Code Online (Sandbox Code Playgroud)
如果参数未定义,则将其初始化为空字符串。目前我的功能在第一种情况下不起作用,但在另一种情况下起作用。
当我这样称呼它时,callWS()我得到:
Uncaught TypeError: Cannot read property 'type' of undefined
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道为什么它适用于 2 和 3 情况,但我需要让它也适用于第一种情况。我知道如果我使用:
if (input["type"])
Run Code Online (Sandbox Code Playgroud)
可以解决问题,但我需要一个内联解决方案。这有可能吗?
您还必须为input变量本身提供默认值。
function callWS(input) {
input = input || {};
...
}
Run Code Online (Sandbox Code Playgroud)
否则,您访问不存在(未定义)对象的属性,这会导致错误(您现在拥有的)。
另一方面,在 JS 中,访问现有对象上不存在的属性不会被视为错误。
| 归档时间: |
|
| 查看次数: |
5395 次 |
| 最近记录: |