美文网首页
JS中运算符对操作数的重载作用

JS中运算符对操作数的重载作用

作者: 呵呵益达哒 | 来源:发表于2016-12-24 21:44 被阅读0次

今天在写代码的时候发现了一个诡异的事情,先看下面这两行代码:

let nowDate = new Date('2016-12-24')
nowDate = nowDate + 3600000 * 24;
console.log(nowDate);
console.log(new Date(nowDate));

我原本要获取下一天的日期,结果在进行运算的时候,忘记写了getTime()方法,然后输出是这样的:

> Sat Dec 24 2016 08:00:00 GMT+0800 (CST)86400000
> Sat Dec 24 2016 08:00:00 GMT+0800 (CST)

这没啥可说的,正常表现,然而当我把代码中的加号改成减号后:

let nowDate = new Date('2016-12-24')
nowDate = nowDate - 3600000 * 24;//这里改成了减号
console.log(nowDate);
console.log(new Date(nowDate));

输出结果变成了这样:

> 1482451200000
> Fri Dec 23 2016 08:00:00 GMT+0800 (CST)

也就是直接输出了前一天的结果。
然后我又试了一下,发现日期类可以直接减去一个整数,并且直接获取到相减后的时间戳:

console.log(new Date('2016-12-14') - 2300);// output: 1481673597700

而加号却不行:

console.log(new Date('2016-12-14') + 2300);
// output: Wed Dec 14 2016 08:00:00 GMT+0800 (CST)2300

好吧,最后查明原因,JS中的运算符会对操作数进行预处理,+会将操作数转化为字符串(除非两操作数均为数字),-会将操作数转化为数字,具体的机制还不知道……

相关文章

  • JS中运算符对操作数的重载作用

    今天在写代码的时候发现了一个诡异的事情,先看下面这两行代码: 我原本要获取下一天的日期,结果在进行运算的时候,忘记...

  • 运算符重载

    一、运算符重载的概念 重载运算符的概念 C++中的表达式由运算符和操作数按照规则构成。 运算符重载就是给已有的运算...

  • C++学习(4)运算符重载

    1.运算符重载 运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型...

  • c++操作符重载

    定义 运算符重载的 实质 是 函数的重载 使用意义赋予操作符更多的意义,同一个运算符,对不同类型的操作数,所发生的...

  • 1.2.13_C++ 一元运算符重载

    C++ 重载运算符和重载函数 一元运算符只对一个操作数进行操作,下面是一元运算符的实例: 递增运算符( ++ )和...

  • C++学习笔记二

    使用类 运算符重载 重载后的运算符必须至少有一个操作数是用户定义的类型 使用运算符时不能违反原来运算符的句法规则,...

  • 第十一章 使用类(3)重载运算符

    (三)重载运算符: 1.作为友元非成员函数还是成员函数 两个操作数的运算符,如果运算符重载是成员函数版本,那么第...

  • 四、运算符重载

    运算符重载的概念 C++中的表达式由运算符和操作数按照规则构成。例如,算术运算符包括加+、减-、乘*、除/和取模%...

  • C++中的运算符重载

    1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算...

  • 2018-10-16

    JS运算符 1作用2按照功能划分3按照操作数个数划分4运算符的优先级5运算符的结合性6算术运算符7正负运算符8赋值...

网友评论

      本文标题:JS中运算符对操作数的重载作用

      本文链接:https://www.haomeiwen.com/subject/cqlrvttx.html