直到最近,我还没有用动态类型语言(如JavaScript)编写过很多代码,现在我开始理解什么是可能的,我开始想知道什么是好主意,什么不是。具体来说,我不确定随着函数在一系列操作中的进展而改变变量的类型是否被认为是良好的做法。
例如,我有一堆包含日期作为字符串的文件。我正在使用
front-matter
提取日期属性并将其存储在表示原始文件的对象中。字符串本身不太一致,所以我使用Moment。js来解析它们,并将结果存储回同一对象的同一属性中
article.date
。我觉得这或多或少是对的,因为
文章日期
在被解析并存储为Date/'Moment'类型之前,只有一个操作的字符串。
接下来是我有点不确定的部分。这是ExpressJS应用程序的一部分,因此这些对象的数组将作为render()调用中的数据传入,然后进入Jade模板进行渲染。但如果我想在Moment中使用一种显示方法呢。js来控制日期看起来像字符串的方式?在传入日期属性之前,将其类型再次更改为String是否合理?
例子:
articles[i] = processArticle(content);
// creates an article object from YAML, object has a property article.attributes.date
articles[i].attributes.date = moment(articles[i].attributes.date);
// attribute is now a Date/Moment
articles[i].attributes.date = articles[i].attributes.date.format("dddd, MMMM Do YYYY, h:mm:ss a");
// attribute is now "Sunday, February 14th 2010, 3:25:50 pm"