Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象属性检测_Javascript - Fatal编程技术网

Javascript对象属性检测

Javascript对象属性检测,javascript,Javascript,执行以下操作所需的最少代码量是多少: 如果对象存在且具有必需的属性且该属性不是空字符串,则将变量设置为该属性的值,否则将变量设置为默认字符串 假设对象变量只能是未定义的或有效的对象,它永远不能是函数、null、字符串或其他任何内容。此外,如果对象具有必需的属性,则它是一个字符串,而不是其他任何内容 对此的解决方案可能是: // obj is the object we are testing, prop is the name of the property, def is the defaul

执行以下操作所需的最少代码量是多少:

如果对象存在且具有必需的属性且该属性不是空字符串,则将变量设置为该属性的值,否则将变量设置为默认字符串

假设对象变量只能是未定义的或有效的对象,它永远不能是函数、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

如果您想缩短它,可以写:

result = (obj && obj[prop]) || def;
空字符串是错误的,因此不需要显式检查长度

result = <val> || <default>;
result=||;

是将变量设置为值的常用习惯用法,如果值为空,则默认值。

我会这样做。它是可读的,并且符合您的意图。由于这个问题是关于优化工作代码的,我已经将其标记为迁移到。我不知道空字符串是错误的,这实际上非常有用。谢谢