上å?ˆ看到å?¸徒正美å?‘的å?š文,,看的时候自己也觉得推断的挺好的;ä¸?过刚好下å?ˆ写了一个团购倒计时页é?¢,å?Œ事拿过去用之å?Ž,å?‘现时间过长会出现倒计时ä¸?走的情况,伪代ç ?如下
var timer, timeout = ~~elem.getAttribute('data-timeout');
if(timeout > 0){
timer = startTimeout(timeout, function(queue){
//...
});
}
其中的~~elem.getAttribute('data-timeout')(elem.getAttribute('data-timeout')|0,效果相å?Œ)就是å?·懒的方å¼?去强制转整型,其类似的等价于parseInt(elem.getAttribute('data-timeout'),10)||0,以å‰?一直认为是等价的,但是现在å?ª能说是类似等价。
但是å?Œ事输出的数值为:2703986000,在断点调试时,å?‘现没有进if也就是说转æ?¢或的数值å°?于0了,为了验è¯?å?š了如下测试:
~~'2703986000'; //-1590981296
'2703986000' | 0; //-1590981296
parseInt('2703986000'); //2703986000
~~'-15909812967'; //1270056217
'-15909812967' | 0; //1270056217
parseInt('-15909812967', 10); //-15909812967
测试å?‘现ä½?è¿?算强制转整型有边界值,而且边界值å°?于Number.MAX_VALUE,并且大于Number.MIN_VALUE,所以当在处ç?†大数值的时候,使用ä½?è¿?算是有风险的;
然å?Žå?ˆå?š部分测试,求了一下ä½?è¿?算的边界值(对ä½?è¿?算ä¸?了解,å?¯能与平å?°也有关系)
~~'2147483647'; //2147483647
~~'2147483648'; //-2147483648
~~'-2147483648'; //-2147483648
~~'-2147483649'; //2147483647
其实仔细看的è¯?,上é?¢还是有规律的;涉å?Š到ä½?è¿?算,ä¸?对之处请æ‹?砖ï¼?
共1评论
鲤鱼爱å–?水说:
于 2014-5-26 10:40:41 #
试试 1024*1024*1024*4 >> 0
1024*1024*1024*2 >> 0
1024*1024*1024 >> 0
回å¤?