mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 23:04:08 +10:00
The definition of '&&': Return the first falsy value, or the last value, skipping the evaluation of other operands. The definition of '||': Return the first truthy value, or the last value, skipping the evaluation of other operands. Toy now follows these definitions. Fixed #154
65 lines
1.1 KiB
Plaintext
65 lines
1.1 KiB
Plaintext
//logical short-circuits and chained assignments
|
|
|
|
//logical AND
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a + 1 && b + 2;
|
|
|
|
assert a == 1, "short circuit 1.1";
|
|
assert b == 2, "short circuit 1.2";
|
|
assert c == 4, "short circuit 1.3";
|
|
}
|
|
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a = (a + 1) && b + 2;
|
|
|
|
assert a == 4, "short circuit 2.1";
|
|
assert b == 2, "short circuit 2.2";
|
|
assert c == 4, "short circuit 2.3";
|
|
}
|
|
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a = a + 1 && b + 2;
|
|
|
|
assert a == 4, "short circuit 3.1";
|
|
assert b == 2, "short circuit 3.2";
|
|
assert c == 4, "short circuit 3.3";
|
|
}
|
|
|
|
|
|
//logical OR
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a + 1 || b + 2;
|
|
|
|
assert a == 1, "short circuit 4.1";
|
|
assert b == 2, "short circuit 4.2";
|
|
assert c == 2, "short circuit 4.3";
|
|
}
|
|
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a = (a + 1) || b + 2;
|
|
|
|
assert a == 2, "short circuit 5.1";
|
|
assert b == 2, "short circuit 5.2";
|
|
assert c == 2, "short circuit 5.3";
|
|
}
|
|
|
|
{
|
|
var a = 1;
|
|
var b = 2;
|
|
var c = a = a + 1 || b + 2;
|
|
|
|
assert a == 2, "short circuit 6.1";
|
|
assert b == 2, "short circuit 6.2";
|
|
assert c == 2, "short circuit 6.3";
|
|
}
|