Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   что означает запись ~~k? (https://javascript.ru/forum/misc/26151-chto-oznachaet-zapis-%7E%7Ek.html)

bot87 28.02.2012 02:06

что означает запись ~~k?
 
1.Встретил в ответах на форуме и хотелось узнать что это такое?
Данная запись применилась коде
var massive= new Array();
massive[1]="слово1";
massive[3]="слово2";
massive[5]="слово3";

for(var k in massive ) {
    if ( ~~k == k ) {
        alert( massive[ k ] );
    }
}

devote 28.02.2012 02:19

оператор тильда (побитовое НЕ), выполняющий для целых чисел фактически -( n + 1 ).

Aetae 28.02.2012 02:21

...используется гуру в качестве округления

bot87 28.02.2012 02:31

пасиб :) Нада погуглить что за

monolithed 28.02.2012 08:36

В математике две тильды обозначают приближенное равенство, в нашем унарная тильда является обозначением двойного побитового отрицания и применяется для получения антье т.е. целой части вещественного числа путем округления в меньшую сторону.
Следующее выражение транзитивно:
alert(Math.floor(1.9) === ~~1.9);

alert([Math.floor(1.9) === 1, 1 === ~~1.9, Math.floor(1.9) === ~~1.9]);

Цитата:

Сообщение от Aetae
...используется гуру в качестве округления

Я слышал они предпочитают побитовое | (ИЛИ) :D
alert(Math.floor(1.9) === (0|1.9));

GuardCat 28.02.2012 09:20

monolithed, тогда уж, наверное, не
Цитата:

Сообщение от monolithed
alert(Math.floor(1.9) == 0|1.9);

, а
alert(Math.floor(1.9) === (0|1.9))
? Или так задумано?

monolithed 28.02.2012 09:46

Цитата:

Сообщение от GuardCat
? Или так задумано?

ага, опечатался

Kolyaj 28.02.2012 10:22

Цитата:

Сообщение от bot87
что означает запись ~~k?

Некоторые так записывают простую и понятную конструкцию Math.floor, чтобы непосвящённые не догадались, что на самом деле происходит. А посвящённые просто спотыкаются взглядом при чтении такого кода, это тоже чтобы жизнь мёдом не казалась.

nerv_ 28.02.2012 15:23

http://javascript.ru/forum/misc/2374...tml#post141673


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