目前,Javascript正在从我的网站上传递的参数中扣除2
。例如,如果我像myFunction(123, 012)
一样调用我的函数,然后在函数中记录参数的值,它们将显示为 123 和 10。 为什么 Javascript 从我的整数值中减去 2,那里有一个前导零?
我的职能:
function myFunction(arg1, arg2){
console.log("Argument One: " + arg1 + ". Argument Two: " + arg2);
}
它不是扣除2
. 012
是八进制表示形式,其值为 10
。
在 EMCA-262 Edition 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")。当您加载包含此代码的页面时,它会引发语法错误。