JavaScript 中的动态输入:这是个好主意吗?
Dynamic typing in JavaScript: Is this a good idea?
直到最近我才用 JavaScript 等动态类型语言编写大量代码,现在我开始了解什么是可能的,我开始想知道什么是好主意什么不是。具体来说,我不确定随着函数在一系列操作中的进展而改变变量的类型是否被认为是好的做法。
例如,我有一堆包含日期字符串的文件。我正在使用 front-matter 提取日期属性并将它们存储在代表原始文件的对象中。字符串本身不是很一致,所以我然后使用 Moment.js 来解析它们,并将结果存储回同一对象 article.date
的同一属性中。这对我来说或多或少是正确的,因为 article.date
在被解析并存储为 Date/'Moment' 类型之前只是一个操作的字符串。
接下来是我不太确定的部分。这是 ExpressJS 应用程序的一部分,因此这些对象的数组作为 render() 调用中的数据传入,然后转到 Jade 模板进行渲染。但是,如果我想使用 Moment.js 中的显示方法来控制日期作为字符串的显示方式怎么办?在传入之前再次将日期属性的类型更改回字符串是否合理?
示例:
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"
我们之所以有类型安全,是为了及早发现代码中的错误:防止无效内存access/illegal operations/etc。在面向对象的语言中允许解耦和代码重用(多态性)。不仅仅是让你作为程序员的生活变得更加困难,而是要确保你的程序 运行.
因为JavaScript不提供类型安全,所以这取决于程序员。 您 必须确保对变量的操作有效并且不会导致异常停止您的程序 运行ning。 您 将必须确保可以对任何对象调用方法调用。
所以回答你的问题:不,随着函数的进展改变变量的类型不是一个好习惯。
要在您的 Jade 模板中使用 Moment.js:How do I display todays date in Node.js Jade?
直到最近我才用 JavaScript 等动态类型语言编写大量代码,现在我开始了解什么是可能的,我开始想知道什么是好主意什么不是。具体来说,我不确定随着函数在一系列操作中的进展而改变变量的类型是否被认为是好的做法。
例如,我有一堆包含日期字符串的文件。我正在使用 front-matter 提取日期属性并将它们存储在代表原始文件的对象中。字符串本身不是很一致,所以我然后使用 Moment.js 来解析它们,并将结果存储回同一对象 article.date
的同一属性中。这对我来说或多或少是正确的,因为 article.date
在被解析并存储为 Date/'Moment' 类型之前只是一个操作的字符串。
接下来是我不太确定的部分。这是 ExpressJS 应用程序的一部分,因此这些对象的数组作为 render() 调用中的数据传入,然后转到 Jade 模板进行渲染。但是,如果我想使用 Moment.js 中的显示方法来控制日期作为字符串的显示方式怎么办?在传入之前再次将日期属性的类型更改回字符串是否合理?
示例:
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"
我们之所以有类型安全,是为了及早发现代码中的错误:防止无效内存access/illegal operations/etc。在面向对象的语言中允许解耦和代码重用(多态性)。不仅仅是让你作为程序员的生活变得更加困难,而是要确保你的程序 运行.
因为JavaScript不提供类型安全,所以这取决于程序员。 您 必须确保对变量的操作有效并且不会导致异常停止您的程序 运行ning。 您 将必须确保可以对任何对象调用方法调用。
所以回答你的问题:不,随着函数的进展改变变量的类型不是一个好习惯。
要在您的 Jade 模板中使用 Moment.js:How do I display todays date in Node.js Jade?