在Javascript中合并?
在C#中,您可以执行以下操作:
string y = null;
string x = y ?? "sup stallion"; //x = "sup stallion" since y is null.
哪里??
运算符是空合并运算符。
在Javascript中我看到了类似的东西:
var headers;
var myHeader = headers || {'Content-type':'text/plain'}; //myHeaders = {'Content...
我也看到了:(页面上的第二个代码片段)
var headers;
var myHeader = headers | {'Content-type':'text/plain'};
两者有什么不同? 这种模式称为...默认参数是什么?
||
是合乎逻辑的还是。 它返回第一个真值操作数*(最后一个值)。 所以
var myHeader = headers || {'Content-type':'text/plain'};
返回“标题”如果它是真的(如果它是空的或未定义的,则该值被核实为“假”)。 如果它是错误的,它将返回第二个操作数。 我不相信这在JavaScript中有一个非常具体的名称,只是像“默认参数值”一般。
|
是一个按位或。 这是一个数学运算,完成了一些完全不同的事情。 这个操作符在这里甚至没有意义(通常它只会产生0
)。 无论你看到那个地方,它肯定是一个错字,他们的意思是使用逻辑或。
所以去那个第一个方法( a = b || c
)。
*“逻辑或”也称为“逻辑析取”或“包含析取”。 与所有编程语言一样,Javascript使用短路评估来评估逻辑语句。 使用逻辑或表达式,它会评估每个操作数的真实性并在第一个真正的操作数上停止(并返回该值)。 如果没有真正的操作数,它仍然需要经历所有的操作数,所以它返回最后一个操作数,它仍然是最后一个操作数。 通过停止第一个伪操作数,逻辑和(&&)同样是短路的。
我不熟悉第二种模式。 我知道的两种模式:
1)你的第一个模式是一个基本的逻辑或操作符。 如果第一个值是虚假的,则分配第二个值。
2)第二种模式称为三元赋值,它在逻辑上与基本的if条件类似,但语法略有不同。
var test = (typeof myTest === "string") ? firstValue : secondValue;
在这种模式中,问号将条件与值分开,冒号分隔值。 三级分配可以嵌套,以便其中一个值包含另一个三级分配。
这不是真正的专家,但||
是一个逻辑运算符和|
是一个按位运算符