假设我们要为菜单项设置助记符,并且希望它是// exp = 2019-09-01 00:00 UTC
var exp = 1567296000
var expDate = new Date(exp*1000);
var expYear = expDate.getYear() + 1900
var expMonth = expDate.getMonth() + 1
var expDay = expDate.getDate()
var expHours = "0" + expDate.getHours()
var expMinutes = "0" + expDate.getMinutes()
var expSeconds = "0" + expDate.getSeconds()
var expFormatted = expYear + "-" + expMonth + "-" + expDay + " " + expHours.substr(-2) + ':' + expMinutes.substr(-2) + ':' + expSeconds.substr(-2);
console.log(expFormatted)
。我注意到几乎所有代码都将其写为:
'c'
我知道我们可以这样写:
menuitem.setMnemonic(KeyEvent.VK_C);
但是,第一种变体似乎更常见。这是为什么?为什么我们不只使用简单字符而不是类似menuitem.setMnemonic('c');
的字符呢?第一个代码比第二个代码有什么优势?
答案 0 :(得分:4)
在第二个示例中,字符“ c”是“魔术”字符。它现在恰好是正确的值,但将来可能不会。如果确实发生了变化,则必须有人找到键入“ c”的所有位置并进行修复。如果像第一个示例中那样使用常量表达式,则只需更改一个位置即可。
您可能会认为“但它当然不会改变,它将始终只是'c'”。肯定在某些时候常量可能会被夸大。例如,如果magic值仅使用一次,或者是100%永不更改的值。但是请考虑它是否变成“ c \特殊字符”之类的东西。使用常量代替魔术字符串或字符只是更安全和最佳实践。