Javascript显示前导零的数字

时间:2017-12-04 06:41:28

标签: javascript parameter-passing

我是javascript的新手,而我正试图用下面的代码测试一个例子, 代码:

function sayHello(name, age) {
  document.write (name + " is " + age + " years old.");
}
<p>Click the following button to call the function</p>  
<form>
   <input type="button" onclick="sayHello('abc', 010)" value="Say Hello">
</form>
<p>Use different parameters inside the function and then try...</p>

我发送参数为'abc'和010.但是在输出中我得到如下,

输出: abc是8岁

3 个答案:

答案 0 :(得分:3)

当JavaScript遇到一个以0开头的数字时,它假定正在使用八进制,因此就是8.正如Eddie在评论中所说,避免这种情况的最好方法是将数字转换成字符串在引文中。希望下面这个例子有帮助!

尝试

onclick="sayHello('abc', '010')"

并使用+符号将字符串明确转换为数字。

console.log('age: ' , +age); //print age: 10

答案 1 :(得分:2)

执行010时,会将其视为基本8,即八进制。八进制010的十进制表示为8。这就是你看到8的原因。

删除该零或将其作为字符串传递,如下所示

&#13;
&#13;
function sayHello(name, age) {
  document.write (name + " is " + age + " years old.");
}
&#13;
<p>Click the following button to call the function</p>  
<form>
   <input type="button" onclick="sayHello('abc', '010')" value="Say Hello">
</form>
<p>Use different parameters inside the function and then try...</p>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

Javacript引擎将前导零解释为八进制数字文字。它在EMCA Spec的附录中定义 010变为8 * 1 = 8.