javascript - 在 JavaScript 中编写这些语句的简洁而健壮的方法是什么?

标签 javascript conditional-statements undefined ternary

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

关于javascript - 在 JavaScript 中编写这些语句的简洁而健壮的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1720032/

相关文章:

python - 有条件重采样以获得月平均值

javascript - 如何修复javascript中未定义的属性?

javascript - Passport JS 身份验证中间件问题

javascript - 在进度条上显示进度百分比

javascript - 无法从 Strapi 中的 "SINGLE-TYPE"内容类型获取 json 数据

javascript - 转到 maxLength 的下一个输入字段?

sql - Datagridview - 条件中的条件

jQuery:如何仅淡入永久网站元素一次?

jquery - Ajax 错误: Console says - POST is not defined

node.js - NodeJS Mongodb连接错误 "undefiend"