gpt4 book ai didi

javascript - 如何在 JavaScript 中将 bool 属性设置为 "default"?

转载 作者:行者123 更新时间:2023-11-30 07:37:14 25 4
gpt4 key购买 nike

在 JavaScript 中,我经常使用 || 运算符来获取某些属性的值 - 或者默认值。例如:

var dens = mapping.defaultElementNamespaceURI||mapping.dens||'';

如果mappingdefaultElementNamespaceURI,将被使用,否则寻找dens或默认使用空字符串。

但是,如果我的属性是 bool 值,它就不起作用:

var dom = mapping.allowDom || mapping.dom || true;

即使 mapping.domfalse,也返回 true

我想知道,默认 bool 属性的最佳(简洁但仍可读)语法是什么?在某种意义上默认,如果定义了属性,则使用它的值,否则使用一些提供的默认值。当然,我可以为此编写一个函数,但也许有一些像 a || 这样优雅的东西b || c?

代码示例:

var a = {};
$('#result').text(a.boo||a.b||true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="result"></pre>


更新

似乎没有“语法上甜美”的方法来做到这一点,所以我求助于编写一个函数:

var defaultValue = function()
{
var args = arguments;
if (args.length === 0)
{
return undefined;
}
else
{
var defaultValue = args[args.length - 1];
var typeOfDefaultValue = typeof defaultValue;
for (var index = 0; index < args.length - 1; index++)
{
var candidateValue = args[index];
if (typeof candidateValue === typeOfDefaultValue)
{
return candidateValue;
}
}
return defaultValue;

}
}

将最后一个参数视为默认值。返回与默认值具有相同类型的第一个参数。

最佳答案

你会发现最接近优雅的是:

var dom = mapping.allowDom ?映射.allowDom : 映射.dom ?映射.dom : true;

如前所述,这只是一个存在检查。您可以执行以下任一操作来接受 false 值:

var dom = mapping.allowDom != null ? mapping.allowDom : mapping.dom != null ?映射.dom : true;

var dom = 'allowDom' 在映射中? mapping.allowDom:映射中的“dom”?映射.dom : true;

完整性更新:如果您有要比较的变量值列表,则更新中的函数是理想的。但是,如果我们唯一比较的是提到的 2 个(并且我们控制着设置/验证 mapping.thing),我的代码将如下所示。 (我也不知道你以后是如何使用 dom 的。)

var dom = mapping.allowDom || mapping.dom;
dom = dom === undefined ? true : dom;

如果超过 2 个元素,我可能会选择您的方法。

关于javascript - 如何在 JavaScript 中将 bool 属性设置为 "default"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29423170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com