好的,我正在编写一个小代码片段来获取昨天的ISO日期格式值.
码:
var dateString = new Date();
var yesterday = dateString.getFullYear();
yesterday += "-"+dateString.getMonth()+1;
yesterday += "-"+dateString.getDate()-1;
Run Code Online (Sandbox Code Playgroud)
以上代码输出2009-111-23.显然没有将dateString.getMonth()视为intiger并将1添加到它的末尾.
将" - "+放在dateString.getDate()前面会将getDate()强制转换为字符串吗?
这项工作得到了预期的结果.
var dateString = new Date();
var yesterday = dateString.getFullYear() + "-";
yesterday += dateString.getMonth()+1+ "-";
yesterday += dateString.getDate()-1;
//yesterday = 2009-12-22
Run Code Online (Sandbox Code Playgroud)
虽然我不喜欢它看起来的样子......但没什么大不了的.
任何人都可以向我解释为什么javascript会这样吗?为什么会发生这种情况有什么解释?
Eug*_*ota 13
这是关于关联性的.+运算符是左关联的,所以
"-"+dateString.getMonth() + 1
Run Code Online (Sandbox Code Playgroud)
和...一样
("-"+dateString.getMonth()) + 1
Run Code Online (Sandbox Code Playgroud)
在您要首先评估的表达式周围加上括号:
"-" + (dateString.getMonth() + 1)
Run Code Online (Sandbox Code Playgroud)