在C#中,您可以执行以下操作:
string y = null;
string x = y ?? "sup stallion"; //x = "sup stallion" since y is null.
Run Code Online (Sandbox Code Playgroud)
其中??运算符是空合并运算符.
在Javascript中,我见过类似的东西:
var headers;
var myHeader = headers || {'Content-type':'text/plain'}; //myHeaders = {'Content...
Run Code Online (Sandbox Code Playgroud)
var headers;
var myHeader = headers | {'Content-type':'text/plain'};
Run Code Online (Sandbox Code Playgroud)
这两者有区别吗?这个模式叫什么...默认参数?
Ben*_*Lee 36
||是合乎逻辑的还是.它返回第一个真值操作数*(评估的最后一个值).所以
var myHeader = headers || {'Content-type':'text/plain'};
Run Code Online (Sandbox Code Playgroud)
如果它是真实的,则返回"标题"(如果它为null或未定义,则该值被核心化为"false").如果它是假的,它返回第二个操作数.我不相信这在javascript中有一个非常具体的名称,只是像"默认参数值"这样的通用名称.
|是一个按位或.这是一个数学运算,做了一些完全不同的事情.那个运算符在这里甚至没有意义(并且通常只会产生0结果).无论你在哪里看到它,它肯定是一个错字,他们意味着使用逻辑或.
所以请使用第一种方法(a = b || c).
*"逻辑或"也称为"逻辑分离"或"包含分离".与所有编程语言一样,Javascript使用短路评估来评估逻辑语句.使用逻辑或表达式,它会评估每个操作数的真实性,并在第一个真实的操作数上停止(并返回该值).如果没有真正的操作数,它仍然必须遍历所有操作数,因此它返回最后一个操作数,仍然是它评估的最后一个操作数.逻辑和(&&)同样通过停在第一个假操作数上而短路.
javascript (es2020) 现在支持空合并运算符
正如 Mozilla 文档所说:
空合并运算符 (??) 是一个逻辑运算符,当其左侧操作数为空或未定义时,它返回其右侧操作数,否则返回其左侧操作数。
与逻辑 OR (||) 运算符相反,如果左操作数是非 null 或未定义的假值,则返回左操作数。换句话说,如果你使用 || 要为另一个变量 foo 提供一些默认值,如果您认为某些虚假值可用(例如“”或 0),则可能会遇到意外行为。请参阅下文了解更多示例。
// Assigning a default value to a variable (old way but in some cases we need this)
let count = 0;
let text = "";
let qty = count || 42;
let message = text || "hi!";
console.log(qty); // 42 and not 0
console.log(message); // "hi!" and not ""
// Assign default value when we want to skip undefined/null only
// in most cases we need this, because (0,"",false) are valid values to our programs
const foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"
const baz = 0 ?? 42;
console.log(baz);
// expected output: 0
Run Code Online (Sandbox Code Playgroud)
fallback to default value有关更多信息,请阅读 kent c dods 提供的有关过去和现在的
示例:https: //kentcdodds.com/blog/javascript-to-know-for-react#nullish-coalescing-operator
| 归档时间: |
|
| 查看次数: |
15642 次 |
| 最近记录: |