Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   false в -1 true в 1 (https://javascript.ru/forum/misc/48250-false-v-1-true-v-1-a.html)

рони 26.06.2014 22:56

BETEPAH,
разделить на .5 всёравно что умножить 2 я в этом плане

BETEPAH 26.06.2014 23:05

рони,
так я же не спорю, говорю же без сарказма.
На полноценный вариант это с трудом катит, так как разделить на .5 и умножить на 2 это все равно, что сделать бинарный левый сдвиг на 1 :)
Ну и двойка вынесена за скобки.

рони 26.06.2014 23:10

Всем спасибо взял вариант nerv_, как более простой и короткий.

MallSerg 26.06.2014 23:11

Цитата:

Сообщение от рони (Сообщение 318133)
MallSerg,
ок! жаль только сама переменная потеряла своё значение - добавлено в 1 пост.

<script>
x=false;
y=true;
document.write([ x && 1 || -1 , y && 1 || -1 ])
</script>

рони 26.06.2014 23:15

MallSerg,
:victory: зачёт

Aetae 27.06.2014 01:18

MallSerg, тогда уж так:
<script>
x=false;
y=true;
document.write([ +x || -1 , +y || -1 ])
</script>

Хотя фигня всё это, на деле я бы пользовался вариантом номер два, ибо просто и наглядно.

рони 27.06.2014 01:42

Aetae,
:victory:

MallSerg 27.06.2014 13:49

Любопытные результаты в разных браузерах )
<script>
var ret=0 , t1, t2 , x=false;

t1 = new Date();
ret = 0;
for (i=0; i < 10000000 ; i++){ret += (x << 1) - 1 } ;
t2 = new Date();
document.write(t1-t2);	document.write("<br>");
document.write(ret);	document.write("<br>");

//------------------------
t1 = new Date(); 
ret = 0;
for (i=0; i < 10000000 ; i++){ret += x ? 1 : -1 } ;
t2 = new Date();
document.write(t1-t2);	document.write("<br>");
document.write(ret);	document.write("<br>");
//------------------------
t1 = new Date();
ret = 0;
for (i=0; i < 10000000 ; i++){ret += x - !x ;} ;
t2 = new Date();
document.write(t1-t2);	document.write("<br>");
document.write(ret);	document.write("<br>");
//------------------------
t1 = new Date();
ret = 0;
for (i=0; i < 10000000 ; i++){ret += (x - .5) * 2 ;} ;
t2 = new Date();
document.write(t1-t2);	document.write("<br>");
document.write(ret);	document.write("<br>");
//------------------------
t1 = new Date();
ret = 0;
for (i=0; i < 10000000 ; i++){ret += +x || -1 ;} ;
t2 = new Date();
document.write(t1-t2);	document.write("<br>");
document.write(ret);	document.write("<br>");
//------------------------




</script>


Часовой пояс GMT +3, время: 08:32.