|   |      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引擎)实现了一个中途的更改
    |