我需要对某个对象做点什么。不幸的是,我正在使用(Titanium)执行此操作的系统期望值为非null,否则会出现段错误。但是,无法保证输入提供合理的对象。这是一个例子:
var data = {
foo: {
bar: "foobar"
}
};
function do_it(data) {
do_something_with_non_null_value(data.foo.bar);
}
但data
完全有可能是以下任何一种情况:
var data = null;
var data = {
foo: null
};
var data = {
foo: {
bar: null
}
};
如何在深度但简洁的庄园中测试非空值以防止do_something_with_non_null_value()
崩溃?
也欢迎Underscore.js的答案。
答案 0 :(得分:1)
如何使用下划线的defaults
方法?
function do_it(data) {
var defaults = {
foo: {
bar: null
}
};
data = _.defaults(data || {}, defaults);
do_something_with_non_null_value(data.foo.bar);
}
如果数据是以下任何一项:
var data = null;
var data = {
foo: null
};
将对象更改为:
var data = {
foo: {
bar: null
}
};