The variable is aused as the value of l twice in the expression.
Keep in mind that this x ^= yis actually a shortcut for x = x ^ y, which means that the first operand is read and then written.
, , .
b ^= a ^= b;
a , b . , a ^= b, b , a , , (r1) . b ^= r1, b ( , ), . , -, undefined. a , b , , a b . .
, :
a ^= b ^= a ^= b;
a , 1 3, 1 3. a 3, 1 ?
, 1 3, . . 3 a, 1, . undefined.