我有一个,它使用在父文档的对象常量中设置的一些变量。这些变量是可选的。如果设置了它们,我想使用它们的值,将它们分配给一个更简洁的全局变量;如果没有,我想调用函数error()。
首先,此三元运算符语句对我要执行的操作有效吗?这里有潜在的陷阱吗?
parent.settings.account ? var account = parent.settings.account : error();
其次,有没有更简洁的方式来编写该声明?
这些变量中的一些是可选的,但如果定义,则具有一定范围的可接受值。有什么健壮的方法可以解决此问题?像这样吗
if (parent.settings.polling_interval && parent.settings.polling_interval >= 1000 && parent.settings.polling_interval <= 5000) {
var polling_interval = parent.settings.polling_interval;
} else {
var polling_interval = 3000; // default
}
基本上,如果未定义或超出范围,我想使用默认值。
我可以仅依赖以下条件语句:
if (parent.settings.polling_interval) { ... }
还是我需要检查它是否未定义?
if (typeof parent.settings.polling_interval !== 'undefined') { ... }
还有更健壮和/或更简洁的东西吗?感谢您的任何建议。
最佳答案
这是错误的:
parent.settings.account ? var account = parent.settings.account : error();
您的意思是说:
var account = parent.settings.account ? parent.settings.account : error();
甚至:
var account = parent.settings.account || error();