所以基本上我有这种情况
var a = someUndefinedVariable.name || "";
在这种情况下为什么'a'不等于空字符串??? 这个表达式抛出一个错误,所以我认为执行只是停止,而Interpreter没有到达带有OR语句的部分。这样对吗? 但是,没有属性名称一切正常。 非常感谢您的关注。
答案 0 :(得分:6)
因为someUndefinedVariable
undefined
,name
没有属性var a = (someUndefinedVariable && someUndefinedVariable.name) || "";
,所以它会崩溃。替换为:
{{1}}
答案 1 :(得分:4)
这个表达式抛出一个错误,所以我认为执行只是停止,而Interpreter没有到达带有OR语句的部分。这样对吗?
是。异常会暂停执行(除非你catch
)。
然而,没有属性名称一切正常。
undefined
值,则可以自由访问它。它只是undefined
。undefined
值的属性会引发异常:
未捕获的TypeError:无法读取未定义的属性“bar” 您正在处理案例2和案例。
答案 2 :(得分:3)
您可以先检查someUndefinedVariable
,以防止访问未定义变量的属性
var a = someUndefinedVariable && someUndefinedVariable.name || "";
答案 3 :(得分:1)
你应该使用
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="text/plain"
android:scheme="file"
android:host="*" />
</intent-filter>
因为你指的是一个未定义变量的属性,它会崩溃,而是先检查变量是否存在