Ste*_*eve 8 javascript object member literals
似乎以下用于检查对象成员是否存在的技术会产生错误,因为在检查之前尚未声明'bar'父对象,这意味着我要么必须在检查之前声明它,要么使用两个'typeof'表达式,其中任何一个都是多余的代码:
var foo = {},
newVal = (typeof foo.bar.myVal !== 'undefined' ? foo.bar.myVal : null );
Error: foo.bar is undefined
Run Code Online (Sandbox Code Playgroud)
那么,如何检查未声明对象中的成员是否存在而不会产生错误?
我喜欢javascript,但有时......
Din*_*one 10
只需使用以下代码即可完成:
var newVal = (foo && foo.bar && typeof foo.bar.myVal !== 'undefined') ? foo.bar.myVal : foo.bar.myVal
Run Code Online (Sandbox Code Playgroud)
属性为null或未定义,它将被评估为false,因此上面的代码将只处理第一个'false'语句.
var newVal = ('foo' in window && // could be typeof foo !== 'undefined' if you want all scopes
'bar' in foo &&
'myVal' in foo.bar) ? foo.bar.myVal : null;
Run Code Online (Sandbox Code Playgroud)
为了公平对待javascript,它几乎就像自然语言一样.
| 归档时间: |
|
| 查看次数: |
10995 次 |
| 最近记录: |