Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/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_Conditional Statements - Fatal编程技术网

Javascript 检查财产存在的最佳实践

Javascript 检查财产存在的最佳实践,javascript,conditional-statements,Javascript,Conditional Statements,从性能/最佳实践的角度来看,进行如下检查是否更好: if ('x' in y) 或者这个: if (y.x) 除了第一个返回值false和第二个返回值undefined之外,它们之间有什么区别吗?如果只想在该对象中查找属性,可以使用hasOwnProperty,如果还可以在原型中查找,则可以在语句中使用 是的,有区别。如果您的x属性存在,但其值为undefined-y.x将返回给您undefined,并且无论是否存在x属性或其值是否undefined 看看这个例子,x存在于对象上,但是z不存

从性能/最佳实践的角度来看,进行如下检查是否更好:

if ('x' in y)
或者这个:

if (y.x)

除了第一个返回值
false
和第二个返回值
undefined
之外,它们之间有什么区别吗?如果只想在该对象中查找属性,可以使用
hasOwnProperty
,如果还可以在原型中查找,则可以在
语句中使用

是的,有区别。如果您的
x
属性存在,但其值为
undefined
-
y.x
将返回给您
undefined
,并且无论是否存在
x
属性或其值是否
undefined

看看这个例子,
x
存在于对象上,但是
z
不存在,当访问
y.x
y.z
时,给出了相同的结果

consty={x:undefined};
if('x'在y中){
log('x存在于y对象上');
}
控制台日志(y.x);

控制台日志(y.z)
如果
y
中存在
x
,我猜
y.x
在解析后也会获取值<代码>y中的“x”
只需执行一次搜索,搜索速度会更快


这并没有考虑它将如何影响
if()

提供的两个代码段执行不同的任务。第一个片段检查属性是否存在,第二个片段检查值。如果该值恰好为零或任何其他预期值,则第二个代码段将失败。