我是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岁
答案 0 :(得分:3)
当JavaScript遇到一个以0开头的数字时,它假定正在使用八进制,因此就是8.正如Eddie在评论中所说,避免这种情况的最好方法是将数字转换成字符串在引文中。希望下面这个例子有帮助!
尝试
onclick="sayHello('abc', '010')"
并使用+符号将字符串明确转换为数字。
console.log('age: ' , +age); //print age: 10
答案 1 :(得分:2)
执行010
时,会将其视为基本8
,即八进制。八进制010
的十进制表示为8
。这就是你看到8
的原因。
删除该零或将其作为字符串传递,如下所示
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;
答案 2 :(得分:0)
Javacript引擎将前导零解释为八进制数字文字。它在EMCA Spec的附录中定义 010变为8 * 1 = 8.