1
24
这个问题我有点晚了,但我想我可以给出一个好的答案。
接受的答案不会告诉你更多你实际知道的事情,并且在问题本身中提到:
关键是要知道 语义差异 之间 类型转换 和 正在分析 .
因为
Number constructor called as a Function
(
什么时候?
此产品只能保存十进制文本和十六进制整数文本: ... StrNumericLiteral ::: StrDecimalLiteral HexIntegerLiteral ...
这种语法和“正常”语法也有语义上的区别。
一
现在我要和
这些功能的目的显然是 句法分析 ,这就是 语义上 不同于 类型转换 例如:
值得一提的是
如你所见,这引入了 incompatibility 在ES3和ES5实现之间的行为中,建议始终使用基数参数,以避免任何可能的问题。 现在你的第二个问题是:
实际上,这种去除八进制文字的努力是从1999年开始的。八进制文字生成(
实际上,它们包含在所有主要实现中,但从技术上讲,符合ES3或ES5的实现可以选择不包含它们,因为它们被描述为 非规范性 . 这是第一步,现在是ECMAScript 5 Strict Mode 完全不允许。 但是为什么呢?
因为他们被认为是
易出错的
特征,事实上,在过去
无意的
或
难以捕捉
bugs_
现在,在严格模式下,八进制文字将导致
|
2
4
|
3
2
为了解释为什么ES5中取消了八进制支持,主要是因为对于新手或非程序员来说,语法是意外的。想象一下,垂直对齐一系列数字(可能是加起来的),使用前导零来对齐它们,例如——如果您的数字不使用8或9,它们最终将被视为八进制。突然,你的代码在杂草丛中消失了,没有明显的原因!这就是拆除八进制支架的原因。如果不造成这样的不幸,也许有一天会添加一个不同的八进制语法(我想我记得看到过
关于不相容
几天来,spidermonkey(mozilla的javascript引擎)实现了一个中途的更改
|
Sam · ES5 Javascript封装的对象自动增量id 6 年前 |
darkiron · vuejs内容可编辑和回退问题 6 年前 |
Phillip YS · 如何对对象中特定键的所有值求和? 6 年前 |