javascript - 函数内同名变量改变传递参数的值

标签 javascript jquery node.js

我有一个 JavaScript 函数,如下所示:

function modifyx(xvalue) {
  val = 1;
  for (x = 0; x < 10; x++) {
    val = val + 1;
  }
  return val;
}

主代码片段将一个名为 x 的变量传递给上面的函数,如下所示:

for (x = 0; x < 10; x++) {
  console.log(modifyx(x));
}

预期输出应该是“11”打印 10 次,但实际上只打印了一次。即使我没有修改传递的值,函数调用也会更改 x 的值。函数内的 x 有其自己的作用域。但它还是被修改了。对此的任何帮助将不胜感激。

最佳答案

变量x你的代码是 global 。当你的方法 modifyx(xvalue)第一次返回 x 的值已经是 11,它在第二次迭代的 for 循环中使用。因此无法进一步执行该方法。

使用let xfor (x = 0; x < 10; x++) 的声明中创建独特的执行环境。

function modifyx(xvalue) {
  val = 1;
  for (x = 0; x < 10; x++) {
    val = val + 1;
  }
  return val;
}

for (let x = 0; x < 10; x++) {
  console.log(modifyx(x));
}

关于javascript - 函数内同名变量改变传递参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615305/

相关文章:

php - AJAX 没有响应

php - 使用 jQuery 和 PHP 发送和接收 AJAX 请求

javascript - addClass 不会在多个元素上同时发生

javascript - 如何在 iOS 上自动播放移动网络视频(参见演示)

javascript - jQuery .animate 函数在切换选项卡时行为不正常

eclipse - 如何在开发时更改源代码时在 Eclipse/Aptana Studio 中自动重新启动 Node.js 应用程序?

Javascript 包与另一种语言的包装器

javascript - 类似于 closest 的 jQuery 函数将返回父链之外的元素

node.js - 咕噜声 : Watch file changes and compile parent directory

node.js - Babel 和 Bluebird promise