无法通过将参数传递给 Javascript 函数来理解行为

Can not understand behaviour by passing arguments to Javascript functions

本文关键字:函数 Javascript 参数传递      更新时间:2023-09-26

考虑遵循包含Javascript的HTML片段。将此代码粘贴到此处以查看在 W3Schools 的 Tryit 编辑器中运行的内容。

<!DOCTYPE html>
<html>
<body>
<a href="javascript: submitQuickAddForm('00001030')">Number with quotes</a><br>
<a href="javascript: submitQuickAddForm(00001030)">Number without quotes</a> <br>
<a href="javascript: submitQuickAddForm(hello)">Text with quotes</a> <br>
<a href="javascript: submitQuickAddForm('hello')">Text without quotes</a>
<script>
function submitQuickAddForm(itemNumber) {
alert(itemNumber);
}
</script>
</body>
</html>

第一个链接00001030。第二:536 我完全听不懂?!第三个链接不执行任何操作(可能没有指定参数的类型)最后一个链接再次运行良好(输出:你好)

那么第二个和第三个链接是怎么回事呢?

第一个是字符串,第二个被解释为八进制数,因为前导为 0。

编辑:从@RobG到问题的解释:"但为什么它不能只发出00001030或至少1030警报?为什么是536?

因为Number.prototype.toString假设基数为 10

更新:第三个链接不执行任何操作,因为未定义hello。很可能您在控制台中遇到错误:ReferenceError: hello is not defined