Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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:typeof fooVariable!==';未定义';vs变量_Javascript - Fatal编程技术网

JavaScript:typeof fooVariable!==';未定义';vs变量

JavaScript:typeof fooVariable!==';未定义';vs变量,javascript,Javascript,而不是做 if (typeof some !== 'undefined' && some.thing.variable === 'someValue') 。。。只做以下事情是否可以接受 if (some && some.thing.variable === 'someValue') 是的,这在私人活动中是可以接受的。只需确保您已经声明了变量some,以避免出现ReferenceError。 理由:由于有一些人投了反对票,我想我需要提供一些背景来说明为什么我认为

而不是做

if (typeof some !== 'undefined' && some.thing.variable === 'someValue')
。。。只做以下事情是否可以接受

if (some && some.thing.variable === 'someValue')
是的,这在私人活动中是可以接受的。只需确保您已经声明了变量
some
,以避免出现
ReferenceError
。 理由:由于有一些人投了反对票,我想我需要提供一些背景来说明为什么我认为这是可以接受的。我之所以提到“私有函数”,是因为在私有函数中,假设我们知道哪些对象具有哪些属性。因此,无论风格如何,只有当
some
确实是所宣传的对象时,第二次编写才是可接受的原始代码片段的替代方案

所讨论的函数需要声明变量,并且不能从外部访问。有些变量以下划线开头:

// Declare variable
var _some;

只需使用
someVariable===“someValue”
。您关心其他错误的值吗?如果是-不,否则-是。事实上,是的,Tushar是对的-如果你想要精确匹配,你不需要首先检查未定义的值-根据定义,如果它是
“someValue”
的话,这个值就不能是
未定义的它将是
未定义的
。它遵循逻辑,因为值……毫不奇怪,没有定义。您可以将该值显式设置为
未定义
,但通常,
未定义
表示“我还没有分配值,所以它是空的,
null
表示“我自己设置了一个值,而该值是空的”,因此当您自己分配“非值”时,您应该更喜欢
null
。还要注意的是,如果(a)
不会通过
0
但它们可能是有效值,例如,
totalAmount=0
如果
obj
未定义,您仍然会得到一个错误。如果嵌套更深,代码将变得不可读。最好是:
if(obj&&obj.p){}
。但不管怎样,代码风格只能引起争论,所以不是那种答案。哎呀!没错。固定的为了便于阅读,您可以将其包装在函数中。但我的观点是,如果您不确定属性是否存在,那么检查
未定义的
是没有意义的,因为无论哪种方式都会出错。