1

Currently, Javascript is deducting 2 from the arguments passed in my website.

For example, if I call my function like myFunction(123, 012) and then log the values of the arguments in the function, they come out as 123, and 10. Why does Javascript deduct 2 from my integer values where there is a leading zero?

My function:

function myFunction(arg1, arg2){
    console.log("Argument One: " + arg1 + ". Argument Two: " + arg2);
}
4

2 回答 2

4

不是扣除2012是八进制表示,其值为10.

于 2013-09-28T22:16:38.623 回答
1

在 EMCA-262 第 3 版之前的 Javascript 中,整数文字可以有多种类型(请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals):

  • 无前导零:解释为十进制文字(十进制12= 12)
  • 前导零:八进制解释(012十进制 = 10)
  • 前导 0x:十六进制(0x12十进制 = 18)

然而,这些天八进制文字已被弃用(自 Javascript 1.5 起),正是由于此处显示的原因,它们非常令人困惑。

附带说明一下,启用严格模式是值得的(在代码的末尾添加“use strict”和引号)。当您加载带有此代码的页面时,它会引发语法错误。

于 2013-09-28T22:52:07.727 回答