执行以下操作所需的代码量最少:
如果对象存在且它具有必需属性且属性不是空字符串,则将变量设置为属性值,否则将变量设置为默认字符串。
假设对象变量只能是未定义的或有效的对象,它永远不能是函数,null,字符串或其他任何东西。此外,如果对象具有必需的属性,则它是一个字符串,而不是其他任何东西。
解决这个问题的方法可能是:
// obj is the object we are testing, prop is the name of the property, def is the default string
var result = def;
if (obj && obj[prop] && obj[prop].length) {
result = obj[prop];
}
这是否完全正确我不确定。
但是有更短的路吗?
谢谢,
AJ
答案 0 :(得分:2)
如果你想缩短它,你可以写:
result = (obj && obj[prop]) || def;
空字符串是假的,因此您无需明确检查长度。
result = <val> || <default>;
是将变量设置为值的常用习惯用法,如果值为null,则为默认值。