通过更好的技术部Formbuilder库,我看到几种字符串映射到大写字母对象属性,就好像在JavaScript中模仿常量一样。以下是main.coffee:
mappings:
SIZE: 'field_options.size'
UNITS: 'field_options.units'
LABEL: 'label'
FIELD_TYPE: 'field_type'
...
这些"常数"然后大部分内插在构成视图的字符串中。来自paragraph.coffee:
view: """
<textarea class='rf-size-<%= rf.get(Formbuilder.options.mappings.SIZE) %>'></textarea>
"""
除了不必使用文字之外,这样做是否具有性能或架构优势?似乎不会那么辛苦,如果不是更快,只是为了使用字符串。
答案 0 :(得分:1)
穷人的宣言安全。
rf.get('field_optons.size')
// => undefined (I assume, depends on rf.get)
rf.get(Formbuilder.optons.mappings.SIZE)
// => TypeError: Cannot read property 'mappings' of undefined
第一种情况下的拼写错误会导致代码的值不正确(undefined
)。
第二种情况下的拼写错误,除非是在最后一部分中,否则将中止您的程序。
答案 1 :(得分:1)
Javascript没有常量,所以当你看到它时,它实际上更像是用于传递常量意图的代码约定。主要优点是您可以在代码中引用此常量十次,并且当您需要更改值时,您只需要在一个位置更改它。
编辑:常量来到ES6,现在在不同的浏览器中得到部分支持。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const