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

时间:2014-01-20 12:03:39

标签: 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()
;
}

因此,dateString1将返回我正在寻找的字符串,但dateString2将返回undefined。在Chrome和IE8上查看。

发生了什么事?

由于

1 个答案:

答案 0 :(得分:10)

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

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

远离这样的事情:

if (something)
{
    // logic
}

始终使用这种风格:

if (something) {
    // logic
}