取自box2djs樣本。在下面的JavaScript函數中,||是什麼運營商呢?
我想了解的庫,但我不明白這行:
ballSd.radius = rad || 10;
這是什麼意思?
下面是完整的定義
createBall2 = function(world, x, y, rad, fixed) {
var ballSd = new b2CircleDef();
if (!fixed) ballSd.density = 1.0;
// what does the next line do?
ballSd.radius = rad || 10;
ballSd.restitution = 0.2;
var ballBd = new b2BodyDef();
ballBd.AddShape(ballSd);
ballBd.position.Set(x,y);
return world.CreateBody(ballBd);
};
這不是第一個操作數從左至右決定勝負。在OP的例子中,第一個操作數可以是一個字符串,但如果它不是「falsy」,表達式會返回一個數字。它是導致比較短路返回的操作數。如果沒有操作數將比較短路,則返回最後一個操作數。 '!'因爲它是一個一元操作符,所以在這裏並不重要。 –
@Juan Mendes:我會說這是一樣的。不知道你想用字符串示例告訴我什麼。當然,如果'rad'是一個空字符串,它不會確定結果。返回'10'。如果它不是空字符串,則會返回。請注意,如果它是0 *,我寫了***例如**。如果最後的操作數被返回,那麼它是第一個決定結果的結果,因爲之前所有的結果都沒有。 –
現在我明白你的意思了。我很困惑,因爲你的第一句話含糊不清,再讀一遍......「第一個操作數(從左到右)決定了表達的結果。」如果它表示類似「第一個操作數(從左到右)短路比較確定表達式的結果」,則會更清楚。 –