То что данные введённые в prompt преобразуются в тип Number.
!!выражение - преобразовать к Boolean типу.
аналог с одним ! - преобразовать данные к Boolean и инвертировать (например: !0 = true).
+'10' + +'10'
- сложить строки как числа (в этом примере ответ будет 20).
value1 || value2
- используется для возвращения из функции какого-то результата (value1 если имеет !!value = true или value2), так-же можно записывать в переменную таким образом какое-то из значений, например:
var foo = bar || test;
Нужно использовать там где ожидается какое-то из значений, например:
function fooTest(arg1, arg2){
return arg1 || arg2;
}
fooTest(10, 40) = 10;
fooTest(undefined, 40) = 40;
выражение 1 && выражение 2 - когда нужно выполнить одно выражение затем второе, если первое будет false то второе никогда не выполниться.
Например:
// Возвести число в квадрат в случае если оно больше 10.
function foo(x){
return x > 10
}
function bar(x){
return x*x;
}
function sqrdX(x){
return foo(x) && bar(x);
}
sqrdX(40) = 1600;
sqrdX(4) = false;