在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;

在这种模式中,问号将条件与值分开,冒号分隔值。 三级分配可以嵌套,以便其中一个值包含另一个三级分配。


这不是真正的专家,但|| 是一个逻辑运算符和| 是一个按位运算符

链接地址: http://www.djcxy.com/p/73369.html

上一篇: coalescing in Javascript?

下一篇: Javascript one line If...else...else if statement