如何将 JS 变量的值(而不是引用)传递给函数
在 JavaScript 等动态语言中,变量是默认情况下通过引用传递。这意味着对函数内变量所做的任何更改都将反映在函数外的原始变量中。在某些情况下,这种行为是不可取的,您可能需要将变量的值传递给函数。
对于现代浏览器,请考虑使用 let 或 const 关键字来定义块作用域变量:
<code class="js">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
这种方法确保循环的每次迭代都会为 i 变量创建一个新的作用域,从而防止每个侦听器在循环结束时使用 results.length 的值的问题。
如果您使用的是较旧的浏览器,请通过将变量作为函数参数传递来为循环的每次迭代创建一个单独的范围:
<code class="js">for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i); }</code>
通过使用匿名函数并使用变量调用它作为第一个参数,您可以有效地传递值并创建一个闭包。这确保每个侦听器都有自己的 i 变量副本,并在创建侦听器时引用其值。
以上是如何将 JavaScript 变量的值(而不是引用)传递给函数?的详细内容。更多信息请关注PHP中文网其他相关文章!