js比较日期Date发现的问题?

image.png
d1与d2直接比较Date对象可以比较出来大小.我又创造出来一个和d2一摸一样的d3,为啥跟d2就无法比较相等呢?

阅读 2.9k
4 个回答

Date 是引用类型。

你那个大于小于的比较实际是转为 string 后比较的。
你那个大于小于的比较实际是转为 number 后比较的。

非要比较的话取 date.getTime() 时间戳后比较吧。

Date比较大小时是用valueOf,Date.prototype.valueOf返回的是时间戳

你要是比较日期大小可以使用毫秒数来进行比较
你要分清对象和原始值的比较
ex:

var o = {x:1}, p = {x:1};      // 具有相同属性的两个对象
o == p                        // => false: 两个单独的对象永不相等
var a = [], b = [];            // 两个单独的空数组
a == b                        // => false: 两个单独的数组永不相等

  我们通常将对象称为引用类型(reference type),以此来和JavaScript的基本类型区分开来。对象值都是引用(reference),对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。

  ex:

var a = [];  // 定义一个引用空数组的变量a
var b = a;   // 变量b引用同一个数组
b[0] = 1;    // 通过变量b来修改引用的数组
a[0]         // => 1: 变量a也会修改
a === b      // => true:a和b引用同一个数组,因此它们相等
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题