编程语言
首页 > 编程语言> > javascript-此分配结构称为什么?而且您可以在Php中做到吗?

javascript-此分配结构称为什么?而且您可以在Php中做到吗?

作者:互联网

我经常在Javascript中使用以下构造:

var foo = other_var || "default_value";

在Javascript中,如果左侧是虚假的,则将分配右侧的值.

它非常方便,并节省了编写更长和不必要的显式三元表达式的时间.

这种结构有名称吗?

奖励:在Php中不使用三元运算符就可以做到这一点吗?

PS:另一个变体是如果您没有获得真实值,则抛出错误,而不是提供默认值:

var foo = something || alert("foo is not set!");

解决方法:

逻辑或(通常||)运算符在许多语言中都大不相同.

在某些语言中(例如C,C),它的工作方式是:“评估左侧;如果为true,则返回true,否则评估右侧,否则为true或false.”结果始终是布尔值.

在其他语言(例如Javascript,Python,我也相信PHP)中,它更像是:“评估左侧;如果为true,则返回它,否则评估右侧并返回结果.”然后结果可以是任何类型,您可以执行类似以下的构造:

a =(b || c); //等于a = b? b:c;

或相当花哨:

function compare(A, B) { // -1 if A<B, 0 if A==B, 1 if A>B
    return B.x - A.x || B.y - A.y;
}

标签:variable-assignment,logical-operators,expression,javascript
来源: https://codeday.me/bug/20191023/1915054.html