我有一个,它使用在父文档的对象常量中设置的一些变量。这些变量是可选的。如果设置了它们,我想使用它们的值,将它们分配给一个更简洁的全局变量;如果没有,我想调用函数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();

09-20 22:17