如何將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中文網其他相關文章!