一、双波浪号

在一些框架中看到了类似这样的写法:+new
Date();感觉有些怪,查阅了相关资料和一些网友的帮助.对此用法解释如下,希望对大家有所帮助,不合适的地方请大家指正!

var i = 5.1;
var j = 5.5;
console.log(~~i); // 5
console.log(~~j); // 5

一,对于引用类型对象(我指的是String,Date,Object,Array,Function,Boolean)的+运算符运算过程如下!
    1,首先调用此对象的valueOf方法,得到返回数值A
    2,然后把此数值A转换成数字,得到的是最终数值 

作用类似Math.floor

    我的测试如下:
   
function w(s){
      document.writeln(“<br/>”);
      document.writeln(s);
      document.writeln(“<br/>—————————–“);
      }
   String.prototype.valueOf=function(){return 1;};
   w(+new String(“sss”));//输出1
   String.prototype.valueOf=function(){return “a”;};
    w(+new String(“sss”));//输出NaN 
   
   Date.prototype.valueOf=function(){return 1;};
   w(+new Date());//输出1
   Date.prototype.valueOf=function(){return “a”;};
    w(+new Date());//输出NaN
  
   Object.prototype.valueOf=function(){return 1;};
   w(+{});//输出1
   Object.prototype.valueOf=function(){return “a”;};
    w(+{});//输出NaN
  
   Array.prototype.valueOf=function(){return 1;};
   w(+[]);//输出1
   Array.prototype.valueOf=function(){return “a”;};
    w(+[]);//输出NaN
  
   var s=function(){};
   Function.prototype.valueOf=function(){return 1;};
   w(+s);//输出1
   Function.prototype.valueOf=function(){return “a”;};
    w(+s);//输出NaN
  
   Boolean.prototype.valueOf=function(){return 1;};
   w(+new Boolean());//输出1
   Boolean.prototype.valueOf=function(){return “a”;};
   w(+new Boolean());//输出NaN

类似的意思是在处理正数的时候,如果处理负数就它俩就不同了:

二,对于基本数据数据类型,其值转换成数字
    w(+5);//输出5
    w(+true);//输出1
    w(+false);//输出0
    w(+”ss”);//输出NaN
    w(+”111″);//输出111

~~-5.1 // 5
Math.floor(-5.1) // -6
~~-5.5 // 5
Math.floor(-5.5) // -6

Date();感觉有些怪,查阅了相关资料和一些网友的帮助.对此用法解释如下,希望对大家有所帮助,
不合…

注:

Math.ceil(x)
Returns the smallest integer greater than or equal to a number.
Math.floor(x)
Returns the largest integer less than or equal to a number.
~~
是向0计算,取值向0靠拢

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图