~: ビット単位の NOT 演算子はチルダ (~) で表されます。ビット単位の NOT 演算の実行結果は、戻り値の補数になります。
var num1 = 3;数値は 3 です
var num2 = ~(num1);
console.log(num2) // "-4"
var num3 = -3;
var num4 = ~(num3);
console.log(num4) // "2"
console.log(~(0)) // "-1"
はい、これで ~ 演算子の原理が分かりました。幸せですか? 。 。 。この章は何度も読みましたが、満足ではありません。 。 。使ったことがないので本当に恥ずかしいです。この演算子はどこで使用できると思いますか?親切。 。 。少し考えて、同僚からのコードを入力します:
if(〜Item [search_key] .tolowercase()。indexof(query)){
。
if( str.indexOf(query) != -1 ) または if( str.indexOf(query) >= 0)
コードをコピー
コードは次のとおりです:
var str = "hutaoer go go go!!!! 私のラッキーナンバーは 33 です!!";
var query = 33;
var timeStart1 = new Date() - 0;
var timeStart2 = new Date() - 0;
for(var j = 0 ; j <100000000; j ) {
str.indexOf(query) >= 0
}
var timeEnd2 = new Date() - 0;
コンソール.log('>= コスト時間:' (timeEnd2 - timeStart2));
// >= コスト時間:10120 ループ数: 10000000
プログラムの更新: オリジナルのテストコードは分割線より上では変更されません。コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
var str = "hutaoer go go go!!!!! 私のラッキーナンバーは 33 です!!";
var query = 33;
var timeStart1 = new Date() - 0;
for(var i = 0; i ~str.indexOf(query)
}
var timeEnd1 = new Date() - 0;
console.log ('~ コスト時間:' (timeEnd1 - timeStart1));
// 周环1000000次 127ms
var timeStart2 = new Date() - 0;
for(var j = 0; j str.indexOf(query) >= 0
}
var timeEnd2 = new Date() - 0;
console.log('>= コスト時間:' ( timeEnd2 - timeStart2));
// 循環1000000次 101ms
var timeStart3 = new Date() - 0;
for(var k = 0; k Boolean (~str.indexOf(query))
}
var timeEnd3 = new Date() - 0;
console.log('ブールコスト時間を追加:' (timeEnd3 - timeStart3));
// 循環1000000次 129ms
var timeStart4 = new Date() - 0;
for(var k = 0; k !!(~str.indexOf(query) )
}
var timeEnd4 = new Date() - 0;
console.log('add !!コスト時間:' (timeEnd4 - timeStart4));
// 周环10000000次 103ms
其实,对一次运算本身来说,相差無几,只是在周环次数过大,比如超过
【更新 2013.10.27 17:28】 修正後のテストにより、この中で「非配置」でも効率が最高であることがわかりました。これは、私が以前よく使っていた、比較数字を使った写し方です。今日、私たちは教義を計算しました。あるいは、いくつかの単純な一般的な計算を直接使用することは、より良い選択になる可能性があります。私たちは、これらの技術を利用して、アップアプリケーションの動作を制御したり、許可したりすることができます。