如何将此代码减少到一行?

Posted

技术标签:

【中文标题】如何将此代码减少到一行?【英文标题】:How do I reduce this code to one line? 【发布时间】:2012-12-09 07:13:30 【问题描述】:

我对 javascript、node.js 和 express 非常陌生。我的问题是,如何重构以下代码使其成为函数内的一行?

exports.about = function(req, res)
 var mytime = new Date();
 res.render('about', title: 'about page', time: mytime.toLocaleDateString() );
;

换句话说,有没有办法可以压缩 var mytime = new Date();和时间: mytime.toLocalDateString() 成一个语句?

【问题讨论】:

这里最好的:new Date().toLocaleDateString(). 大小并不重要——可读性很重要。这是一种你想尽快摆脱的心态——相信我。 你可以使用exports.about = function(req, res) var mytime = new Date(); res.render('about', title: 'about page', time: mytime.toLocaleDateString() ); ;,但这并没有什么意义。 VisioN 有我在这里寻找的答案。谢谢!! 【参考方案1】:

使这段代码更短不会使它变得更好。我个人会把它放大一点,像这样:

exports.about = function (req, res) 
    var mytime = new Date();
    res.render('about', 
        title: 'about page',
        time: mytime.toLocaleDateString()
    );
;
我在function 之后添加了一个空格,因为这是 JSLint 想要的。 我在 之前添加了一个空格,因为这使它更具可读性。 我将所有对象属性放在不同的行上,这样我就不必整天水平滚动了(现在我可以在每个属性的末尾添加 cmets,耶!)。 最后我用制表符替换了空格缩进,因为这样可以使所有内容完美对齐,同时只需按一下键即可删除或越过它们(如果您的插入符号位于行首,则 4 个空格将需要 4 次按键才能移动到您的代码,而单个选项卡只需要一个按键)。

【讨论】:

【参考方案2】:

我的观点是删除 mytime var 是更好的样式,因为您只是获取当前系统时间,而 new Date() 使意图非常清晰。

exports.about = function (req, res) 
    res.render('about', 
        title: 'about page',
        time: new Date().toLocaleDateString()
    );
;

【讨论】:

【参考方案3】:

你可以,

exports.about = function(req, res)
  res.render('about', title: 'about page', time: new Date().toLocaleDateString() );
;

但仅此而已。我同意 Frits van Campen 的观点。

【讨论】:

【参考方案4】:

一行

exports.about = function(req, res) res.render('about', title: 'about page', time: new Date().toLocaleDateString() ); ;

虽然这很愚蠢。您的原始代码没有任何问题。

【讨论】:

【参考方案5】:

见Frits' answer:可以,但真的有必要吗?就像你做的那样,它很好读。

但如果你真的,真的想要,这就是方法:

exports.about = function(req, res)
 res.render('about', title: 'about page', time: new Date().toLocaleDateString() );
;

看起来有点奇怪,但 new Date() 部分优先,所以你甚至不需要在它周围加上括号(例如,你不需要 time: (new Date()).toLocaleDateString())。如果你愿意,你可以拥有它们,但它们不是必需的。

【讨论】:

【参考方案6】:

你没有。可读性胜过简洁。让机器进行缩小。


您可以将mytime.toLocaleDateString() 写成(new Date()).toLocaleDateString(),但我不建议这样做。

我喜欢的样式:

exports.about = function(req, res)
  var mytime = new Date();
  res.render('about', 
    title: 'about page',
    time: mytime.toLocaleDateString()
  );
;

【讨论】:

好的,我明白了,我可能会保持原样。但这实际上是不可能的,还是不推荐? 不需要额外的括号。 是的,需要括号;)new可能也不需要。 @jstevens13 “不可能”是糟糕的程序员所说的。没有什么是不可能的,这样做只是一件愚蠢的事情。 @FritsvanCampen new 在这里至关重要。

以上是关于如何将此代码减少到一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 Python 代码转换为 Node.js

如果内容不存在,如何将此代码更改为 INSERT 而不是 UPDATE? [复制]

如何将此代码从 netezza 迁移到 db2?

在 Visual Studio 代码中,如何删除这一行?这很烦人[关闭]

写一个函数,输人一行字符,将此字符串中最长的单词输出

写一个函数,输人一行字符,将此字符串中最长的单词输出