javascript - 为什么这个 JavaScript 函数的行为如此奇怪?

标签 javascript

观察:

function myFunc(arg1, arg2) {
  if (arguments.length < 2) { // Only one argument received
    arg1 = "Default"; // Set arg1 to some default value
    arg2 = arguments[0]; // Use the first argument passed for arg2
  }
  return [arg1, arg2];
}

myFunc("Hello", "World"); //=> ["Hello", "World"]

// So far, so good. Now let's try one that uses the default value for arg1:

myFunc("World"); //=> ["Default", "Default"]

到底是什么,JavaScript?这里发生了什么?为什么 JavaScript 会这样?

最佳答案

您在使用其值之前覆盖了您的第一个参数:

arg1 = "Default"; // Set arg1 to some default value
arg2 = arguments[0]; // Use the first argument passed for arg2

因此 arg2 的值被设置为值“Default”而不是原始值。

关于javascript - 为什么这个 JavaScript 函数的行为如此奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183974/

相关文章:

javascript - 使用 slice() 时数组正在发生变化

javascript - 按键值过滤 JSON

javascript - 如何破解 IE 中的浏览器缓存?

javascript - 又是Safari??表单提交绕过 AJAX

javascript - 在 DC.js 中呈现多折线图

javascript - 如何使用 Node.js 在 JSDoc 中将 "import"typedef 从一个文件转换为另一个文件?

javascript - 检测 "Missing Video"YouTube 图片

javascript - 使用javascript获取链接标签的内容?

php - 来自 ajax 的 google-charts javascript arrayToDataTable

javascript - 如何在 Knockout Validation 中从 observable 中删除验证规则 [extenders]