Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
~~null; // => 0
~~undefined; // => 0
~~0; // => 0
~~{}; // => 0
~~[]; // => 0
~~(1/0); // => 0
~~false; // => 0
~~true; // => 1
~~1.2543; // => 1
~~4.9; // => 4
~~(-2.999); // => -2
( "-3.8"|0 ) === -3; // true
"-3.8"|0 === -3; // -3
~~"-3.8" === -3; // true
4242334634634634523523 | 0; // => 368574464
3234534534 | 0; // => -1060432762
~~"12345678901" // -539222987
"12345678901"|0 // -539222987
"12345678901"*1 // 12345678901
parseInt("12345678901", 10) // 12345678901
Результат является знаковым 32-битовым целым.
var a = 0 ^ x
, b = 0 | x
// Но иногда удобнее писать
if( ~str.indexOf('sub') ){
}
// чем
if( str.indexOf('sub') != -1 ){
}
if (!~str.indexOf('sub')) {
}
if (!~$.inArray(str, arr)) { }if( str.contains('sub') ){
}
+ Это не кроссбраузерно, а ломать голову, расширен ли прототип на проекте не охота.
Согласен, но на участках с очень большим количеством итераций, лучше перестраховаться.
contains — это самая лучшая перестраховка.if (~arr.indexOf(val)) { /* ... */ } на меня косо смотрят, а вот за такое наверное вообще убьют :)Вдругорядь
function GetRow (index)
{
return $("selector").eq (index || 0);
}
$("selector").val (n || "")
> null || 0 // => 0
> null || 0 || 1 // =>1
> null || 1 || 0 // => 1
> null || 0 || 0 // => 0
> null || 0 || null // => null
> null || 0 || null || undefined // => undefined
> null || 0 || '' || [] || undefined // => []
> null || 0 || '' || false || undefined // => undefined
> null || 0 || '' || false || undefined || 1 // => 1
> null || 0 || '' || false || 1 || undefined // => 1
function ToInt32(val){
return val>>0}
function ToUInt32(val){
return val>>>0}
function ToUInt16(val){
return (val>>>0)%65536}
var ToInteger=Number.toInt||Number.toInteger||function(val){
return val=+val,val!==val?0:val!==0&&val!==Infinity&&val!==-Infinity?(val>0||-1)*Math.floor(Math.abs(val)):val}
Math.floor = function (x){
return x|0;
}
Вертикальная черта, затем ноль