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){}
。但不管怎样,代码风格只能引起争论,所以不是那种答案。哎呀!没错。固定的为了便于阅读,您可以将其包装在函数中。但我的观点是,如果您不确定属性是否存在,那么检查未定义的
是没有意义的,因为无论哪种方式都会出错。