用括号返回,但没有得到不同的结果

Dav*_*vid 4 javascript

在我看来,我遇到了一些奇怪的行为.我想我不明白发生了什么事,所以如果有人能帮我这个......我会很高兴的.

function dateString1(date) {
return (
    ('0' + date.getDate()).slice(-2) + '/' +
    ('0' + (date.getMonth()+1)).slice(-2) + '/' +
    date.getFullYear()
);
}


function dateString2(date) {
return 
    ('0' + date.getDate()).slice(-2) + '/' +
    ('0' + (date.getMonth()+1)).slice(-2) + '/' +
    date.getFullYear()
;
}
Run Code Online (Sandbox Code Playgroud)

所以,dateString1将返回我正在寻找的字符串,但dateString2将返回undefined.在Chrome和IE8上查看了它.

这是怎么回事?

谢谢

Tod*_*tto 10

出于这个原因,将任何东西放在JS的新线上都是一个愚蠢的想法.自动分号插入会破坏您的代码,return;JS引擎将如何解释您的代码(这本身就是一个有效的语句).这样说:

function dateString2(date) {
    return ('0' + date.getDate()).slice(-2) + '/' +
    ('0' + (date.getMonth()+1)).slice(-2) + '/' +
    date.getFullYear();
}
Run Code Online (Sandbox Code Playgroud)

远离这样的事情:

if (something)
{
    // logic
}
Run Code Online (Sandbox Code Playgroud)

并始终使用这种风格:

if (something) {
    // logic
}
Run Code Online (Sandbox Code Playgroud)

  • 你的答案的第二部分与问题无关,并且是主观的(我个人喜欢你提出的风格,但其他人发誓[K&R](http://en.wikipedia.org/wiki/1_true_brace_style#K.26R_style ),没有技术理由偏爱这一个而不是另一个. (2认同)