措施解决办法,字面量和相应品种
分类:pc28.am

复制代码 代码如下:var date1=new Date; 在火狐下 可以正常取得时间,在IE7下 却是 NaN。纠结老长时间,放弃了new date 然后再老外的论坛中找了一段段代码可以兼容所有浏览器的格式化日期代码: 复制代码 代码如下: function NewDate { str = str.split; var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours; return date; }

代码示例:

本文章来给大家介绍在IE浏览器中不支持js new date()函数的解决办法,各位有需要了解的同学可进入参考。

复制代码 代码如下:

解决办法一

var date1 = new Date(2013,1,1);
 var date2 = new Date(2013,1,1);
 date1 == date2;  //执行结果为false
 date1 === date2;  //执行结果为false

 代码如下

 var num1 = new Number(10);
 var num2 = new Number(10);
 num1 == num2;  //执行结果为false
 num1 === num2;  //执行结果为false
 num1 == 10;  //执行结果为true
 10 == num2;  //执行结果为true
 num1 === 10;  //执行结果为false
 10 === num2;  //执行结果为false

复制代码

之所以要写这个主题,是因为日期类型的比较经常会出现意想不到的错误,几乎每个刚接触javascript的开发人员都会遇到这个问题。

function NewDate(str) {
 if(str==null)
  return false;
 str = str.split('-');
 var date = new Date();
 date.setUTCFullYear(str[0], str[1] - 1, str[2]);
 date.setUTCHours(0, 0, 0, 0);
 return date;
}

到底是为什么
规则1
javascript中一切都是对象(引用类型),除了这几个类型的字面量(值类型):Boolean(如:true)、Number(如:100)、undefined、null。

解决办法二

规则2
引用类型之间用"=="或“===”做比较运算时,只要两者不是指向同一份内存地址,都会返回false。

 

代码示例

 代码如下

复制代码 代码如下:

复制代码

var date1 = new Date(2013,1,1);
var date2 = new Date(2013,1,1);
date1 == date2;  //执行结果为false
date1 === date2;  //执行结果为false

function getDays(strDateStart,strDateEnd){
var strSeparator = "-"; //日期分隔符
var oDate1;
var oDate2;
var iDays;
oDate1= strDateStart.split(strSeparator);
oDate2= strDateEnd.split(strSeparator);
var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
return iDays ;
}

图片示意

new date()函数的解决办法,各位有需要了解的同学可进入参考。 解决办法一 代码如下 复制代码...

图片 1

规则3

引用类型和对应的值类型之间用“=="做比较运算时,会先进行类型转换,然后进行比较。

代码示例

复制代码 代码如下:

var num1 = new Number(10);
  var num2 = new Number(10);
  num1 == 10;  //执行结果为true
  10 == num2;  //执行结果为true

规则4引用类型和对应的值类型之间用“==="做比较运算时,始终返回false。

代码示例

复制代码 代码如下:

var num1 = new Number(10);
  var num2 = new Number(10);
  num1 === 10;  //执行结果为false
  10 === num2;  //执行结果为false

特殊的String类型
string是特殊的引用类型,javascript解释器遇到两个一样的字面量会未他们分配同一个内存地址,javascript本身也保持值语义(一旦创建不能修改)。
代码示例

复制代码 代码如下:

var str1 = new String('hello');
 var str2 = new String('hello');
 var str3 = 'hello';
 var str4 = 'hello';

 str1 == str2  //指向结果为false
 str1 === str2  //指向结果为false
 str3 == str4  //指向结果为true
 str3 === str4  //指向结果为true
 str2 == str4  //指向结果为true
 str2 === str4  //指向结果为false

图片示意
图片 2

值类型的内存格局

代码示例

1 var num1 = 1;2 var num2 = 1;

图片示意
图片 3

复制代码 代码如下: var date1 = new Date(2013,1,1); var date2 = new Date(2013,1,1); date1 == date2; //执行结果为false date1 === date2; //执行结果为...

本文由pc28.am发布于pc28.am,转载请注明出处:措施解决办法,字面量和相应品种

上一篇:Net后台的方法解析_jquery_脚本之家 下一篇:没有了
猜你喜欢
热门排行
精彩图文