javascript非运算符的使用

javascript非运算符的使用
~:根据非算子的符号(~)说,其结果是根据非数值代码返回执行
复制代码代码如下所示:
VaR num1 = 3; / /我的幸运数字是3
VaR num2 = ~(num1);
console.log(num2) / / 4
VaR小键盘数字3 = 3;
VaR NUM4 = ~(小键盘数字3);
console.log(NUM4) / 2
console.log(~(0)) / / 1

是的,现在我们知道了~操作符的原理,你高兴吗不高兴,虽然这一章,我已经看过很多次了,因为我从来没用过,很可惜,你觉得这个操作符可以用在哪里好u3002 u3002 u3002think一下,把同事的代码:
复制代码代码如下所示:
如果(~项目{ search_key }。toLowerCase()。IndexOf(查询)){
_results.push(项目);
}

代码uff1a
复制代码代码如下所示:
如果(str.indexof(查询)= 1(如果!)或str.indexof(查询)> = 0)

原理分析:
在str.indexof结束(查询),没有超过两种价值。
1。STR包含一个查询字符串,然后这个值是正整数或0,这一次:!!(~ str.indexof(查询))真(或转换成布尔=(~ str.indexof(查询))= true)
查询字符串包含2。SRT,值是1,时间:!!(~ str.indexof(查询))=假
所以我们可以判断得出的结果增加了单~。它是如此的清爽,没有更多的头皮屑吧。哈哈 uff01
最后,让我们来分析效率。印象操作的效率应该高于操作特性:
复制代码代码如下所示:
var str =hutaoer走!!!!!我的幸运数字是33!;
var查询= 33;
无功timestart1 =新的日期()- 0;
对于(var i = 0;i < 100000000;i + +){
~ str.indexof(查询)
}
无功timeend1 =新的日期()- 0;
(console.log ~成本+时间:'(timeend1 - timestart1));
花费时间:9954个周期数:10000000
花费时间:104个周期数:100000
无功timestart2 =新的日期()- 0;
对于(var j=0;j<100000000;j + +){
Str.indexOf(查询)> = 0
}
无功timeend2 =新的日期()- 0;
console.log(' > =成本+时间:'(timeend2 - timestart2));
=成本时间:10120个循环号:10000000

程序更新:原来的测试代码是固定在除法上的:
复制代码代码如下所示:
var str =hutaoer走!!!!!我的幸运数字是33!;
var查询= 33;
无功timestart1 =新的日期()- 0;
对于(var i = 0;i < 1000000;i + +){
~ str.indexof(查询)
}
无功timeend1 =新的日期()- 0;
(console.log ~成本+时间:'(timeend1 - timestart1));
/ / 1000000次127ms
无功timestart2 =新的日期()- 0;
对于(var j=0;j<1000000;j + +){
Str.indexOf(查询)> = 0
}
无功timeend2 =新的日期()- 0;
console.log(' > =成本+时间:'(timeend2 - timestart2));
/ / 1000000次101ms
无功timestart3 =新的日期()- 0;
对于(var = 0;k<1000000;k + +){
布尔(~ str.indexof(查询))
}
无功timeend3 =新的日期()- 0;
console.log('add布尔成本时间:+(timeend3 - timestart3));
/ / 1000000次129ms
无功timestart4 =新的日期()- 0;
对于(var = 0;k<1000000;k + +){
!!(~ str.indexof(查询))
}
无功timeend4 =新的日期()- 0;
console.log('add!花费时间:!+(timeend4 - timestart4));
/ / 10000000次103ms

其实,对于一个操作本身来说,差异是很大的,但是循环次数过大,比如10000000倍以上,效率就会有一些差距。
{更新2013.10.27 17:28 }通过修改测试,我们可以发现,写点的方法可能不是最有效的,和最好的性能实际上是我一贯的写作方法,使用比较运算符。这真的让我吃惊。有时,人们常常用常识和外观容易混淆,但当他们尝试自己,可能会有不同的发现或其他的结果。今天,我学到了一个教训。
在评论中,学生们反对这种非常流行的写作。毕竟,这些技术可能会给读代码的学生带来麻烦,如果你不知道这个原理,它甚至令人费解,也许,用一些简单的逻辑和一个普通的操作符,它是不是一个更好的选择您是怎么想的
因此,在编写代码时,可以使用什么样的文字,但我希望我们能记住这些技巧,关键时刻可能有用。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部