在javascript中我有以下内容:
var inf = id + '|' + city ;
Run Code Online (Sandbox Code Playgroud)
如果id或city为null,则inf为null.
是否有任何光滑的方式说如果id或city为null则为空.
我知道在c#中你可以做到以下几点:
var inf = (id ?? "") + (city ?? "");
Run Code Online (Sandbox Code Playgroud)
在javascript中有任何类似的方法吗?
可能重复:
javascript的null合并运算符?
在C#中,您可以这样做:
var obj = newObject ?? defaultObject;
Run Code Online (Sandbox Code Playgroud)
这表示,分配newObject到obj如果没有别的空分配defaultObject.我如何用javascript写这个?
我对使用&&这样的声明变量的实际应用感兴趣:
var x = undefined && 4;
// Evaluate to the first falsey value
// or else the last value.
eval(x);
// undefined
Run Code Online (Sandbox Code Playgroud)
我理解如何评估价值(参见本答复).我也理解它的姐妹||(参见这里有一个很好的描述)以及为什么用以下表达式声明变量是有用的:
// Some other variable
var y;
var x = y || 4;
// Evaluate to the first truthy value
// or else the last value.
Run Code Online (Sandbox Code Playgroud)
实际上:使用第一个值,除非第一个值为false; 如果是这样,请使用最后一个值.我们可以||在浏览器控制台中演示这个特性:
> null || 4
4
> 4 || null
4
> null || undefined
undefined
> undefined || null …Run Code Online (Sandbox Code Playgroud) let notStudent, name, isRegistered
if (studentDetail && studentDetail.fields) {
({ notStudent, name, isRegistered } = studentDetail.fields)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有 if 语句的情况下或以简洁的方式编写此逻辑?
我正在寻找一种在 javascript 中使用布尔值进行未定义合并的方法。我习惯于执行以下操作,例如,正整数:
var x = i1 || i2 || i3 || i4;
Run Code Online (Sandbox Code Playgroud)
这是一种“巧妙”的方式,但不是我所追求的。我正在寻找??C# 中的等效项。
var b1 = undefined;
var b2 = null;
var b3 = false;
var b4 = true;
var x = b1 || b2 || b3 || b4; //x == true (b4)
Run Code Online (Sandbox Code Playgroud)
但是,我希望上面的内容在 false 上“停止”(在未定义或 null 上合并,但不是 false)。我正在执行此操作的应用程序类似于以下内容:
var threshold = argv[2] ?? process.env.threshold ?? config.threshold ?? 0.3;
var verbose = isTrue(argv[3] ?? process.env.verbose ?? config.verbose ?? false);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种巧妙的方法来做到这一点,类似于||运算符,而不是:
var verbose …Run Code Online (Sandbox Code Playgroud) 我有时不得不在Javascript编写代码,说明如何处理null和undefined相同的方式,例如,一个函数,从数组中的每一项是会删除null或undefined。我该如何命名功能?
removeNullAndUndefined很长 removeNull简短但不精确。理想情况下,我想将它命名removeX,其中X的含义“null或undefined”。有谁知道一个好词X吗?
可能的重复:
javascript 的空合并运算符?
“选项=选项||”是什么意思 {}”在 Javascript 中是什么意思?
有人能解释一下这个表达吗?我偶然发现了 javascript 代码行,我想知道它是什么意思。
var node = element.node || element[element.length - 1].node;
Run Code Online (Sandbox Code Playgroud)
node get 的用法如下:
if (node.nextSibling) {
node.parentNode.insertBefore(this.node, node.nextSibling);
} else {
node.parentNode[appendChild](this.node);
}
Run Code Online (Sandbox Code Playgroud)
起初我虽然 node 应该是一个布尔值或其他东西,但它不是。如果我认为意思是: node 是 element.node 但如果 node 属性是 undefined node 是元素数组中的最后一个元素,我是否正确?
对于深度嵌套的属性访问,是否有一个类似于“可选链接”运算符的 JS 运算符,适用于所有属性/方法/等。向右?
考虑一个具有深度嵌套的对象,其中某些属性为 null:
const sort = payload.meta.displayConfig.properties.search.sort;
// ^---null? ^---null? ^--null?
Run Code Online (Sandbox Code Playgroud)
这可以使用可选链运算符来处理:
const sort = payload.meta.displayConfig?.properties?.search?.sort;
Run Code Online (Sandbox Code Playgroud)
但是是否还有另一个运算符,其中“所有右侧调用”的处理方式就好像它们前面有可选链运算符一样?观察:
const sort = payload.meta.displayConfig?!.properties.search.sort;
// ^^---fictional nested-optional-chaining
// operator
Run Code Online (Sandbox Code Playgroud)
在此示例中(使用虚构的?!嵌套可选链运算符),如果从displayConfig右侧 ( properties, search) 开始的任何内容均为 null 或未定义,则执行会短路,就好像每个属性前面都有?。
是否有关于添加这样的功能的讨论?
我有如下代码,
const output = (data?.item?.someItem?.count ?? 0) === 0;
Run Code Online (Sandbox Code Playgroud)
在这种情况下输出的值是多少?上面那行的意思是。有人可以帮我理解这行代码吗?
我是编程新手。谢谢。