只是想知道在javascript / jQuery中是否存在等效的Oracle NVL函数 - 如果是这样,我会非常感谢它的工作原理。
感谢。
答案 0 :(得分:9)
例如,如果您在Apex中创建动态操作,则可以执行以下操作:
( $v("P1_VAL1") ? $v("P1_VAL1") : $v("P1_VAL2") )
如果它不为空,则返回P1_VAL1
的值,否则返回P1_VAL2
的值。
答案 1 :(得分:6)
在Javascript中,这实际上可以由||
运算符处理,它返回第一个“有效”值。
var a = null;
var b = "valid value";
var c = a || b; // c == "valid value"
请注意,"falsy"值不仅是null
,还包括空字符串''
,数字0
和布尔值false
。因此,您需要确保您认为具有与null
相同含义的那些或您的变量不能假设这些值,因为在这些情况下您还将获得第二个值:
var a = "";
var b = "valid value";
var c = a || b; // c == "valid value"
答案 2 :(得分:2)
function nvl(value1,value2)
{
if (value1 == null)
return value2;
return value1;
}
答案 3 :(得分:2)
空合并运算符 (??) 是一个逻辑运算符,当其左侧操作数为 null 或未定义时返回其右侧操作数,否则返回其左侧操作数。
var foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"
var baz = 0 ?? 42;
console.log(baz);
// expected output: 0
答案 4 :(得分:-1)
这是我的价值所在的解决方案
var ignoreNaN = false;
function nullButNot0(val) {
if (typeof val == 'number' && isNaN(val)) {
if (!ignoreNaN)
throw Error('NaN passed to nullButNot0()');
return true;
}
if (typeof val == 'object') {
try {
if (val.constructor === Array)
return false;
} catch (e) {
}
}
return (!val && val !== 0);
}
function nvl(s, defVal) {
// WARNING: not guaranteed to work with blank arrays
if (!nullButNot0(s))
return s;
if (!defVal)
defVal = '';
return defVal;
}