为什么八进制数字文字不允许JavaScript 严格模式 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode?有什么害处呢?
"use strict";
var x = 010; //Uncaught SyntaxError: Octal literals are not allowed in strict mode.
<h1>Check browser console for errors</h1>
万一开发商needs to use Octals https://en.wikipedia.org/wiki/Octal(这可能会错误地改变数字含义 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode#Converting_mistakes_into_errors),有解决方法吗?
不允许使用八进制文字,因为不允许它们会阻止程序员在脚本中使用前导零作为填充。例如,看看下面的代码片段:
var eight = 0008,
nine = 00009,
ten = 000010,
eleven = 011;
console.log(eight, nine, ten, eleven);
看起来足够无害,对吧?我们患有强迫症的程序员只想将所有逗号对齐在一起,这样看起来更好。但问题是:
8 9 8 9
这是输出。看看它变得多么不一致?并非所有零填充数字文字都会转换为八进制,因为 8 和 9 不是八进制数字。当必须记住所有这些规则时,很难保持它们的一致性,所以strict mode
完全禁止它会变得更容易。
相反,您应该用前导空格填充,或者如果您想使用八进制,则使用parseInt() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt与可选的radix
的论证8
指定八进制。
以下分别是两个“解决方案”:
"use strict";
var eight = 8,
nine = 9,
ten = 10,
eleven = 11;
console.log(eight, nine, ten, eleven);
"use strict";
var eight = parseInt('010', 8),
nine = parseInt('011', 8),
ten = parseInt('012', 8),
eleven = parseInt('013', 8);
console.log(eight, nine, ten, eleven);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)