簡體   English   中英

串聯似乎在 JavaScript 中不起作用

[英]Concatenation doesn't seem to work in JavaScript

我在我的應用程序中做這樣的事情。 我有一系列 ID 值,如 ID1、ID2 等。我正在嘗試使用 for 循環獲取 ID 值。

串聯似乎不起作用。

 function Save(count,Id1,Id2,Id3){ var response = []; for(var i=1;i <= count; i++) { value = `${'Id' + i}`; alert(value); } }
 <input type="button" value="Submit" onclick="Save(3,1,2,3)" />

您正在創建一個 String "Id1" ,您不能插入一個變量名。 但是使用 ES6,您可以使用rest 參數( ... ) 將 arguments 的部分轉換為數組:

 function Save(count, ...ids) { var response = []; for (var i = 0; i < count; i++) { value = ids[i]; alert(value); } }
 <input type="button" value="Submit" onclick="Save(3,1,2,3)" />

在 ES6 之前,您必須使用arguments (這將轉換所有參數):

 function Save() { var response = []; for (var i = 1; i <= arguments[0]; i++) { value = arguments[i]; alert(value); } }
 <input type="button" value="Submit" onclick="Save(3,1,2,3)" />

或使用eval ,但不要。 這僅用於示例:

 function Save(count, Id1, Id2, Id3, Id4) { var response = []; for (var i = 1; i <= count; i++) { value = eval(`Id${i}`); alert(value); } }
 <input type="button" value="Submit" onclick="Save(3,1,2,3)" />

這不起作用,因為會引發語法異常。 它不是您使用插值的方式。 有很多方法可以以簡單的方式完成您需要的工作:

  • 使用數組:

 function Save(ids) { var response = []; for(var i=0;i < ids.length; i++) { value = ids[i]; console.log(value); } } Save([1,2,3,4]);

  • 使用arguments常量:

 function Save(){ var response = []; for(var i=0;i < arguments.length; i++) { value = arguments[i]; console.log(value); } } Save(1,2,3,4);

這不是插值的工作方式。 它只是將表達式的值插入到字符串中。 例如:

const age = 30
console.log(`I am ${age} years old!`) // Prints "I am 30 years old"

它不會將字符串解釋為表達式,這顯然是您想要做的。 可以使用eval來做到這一點,但這很可能是朝着錯誤方向邁出的一步。

如果要遍歷給定值,只需使用數組即可:

 function save (values) { for (const value of values) { alert(value) } }
 <input type="button" value="Submit" onclick="save([9, 8, 7])" />

您還可以手動迭代索引,如果您也需要索引,這可能很有用,例如:

 function save (values) { for (let i = 0; i < values.length; i++) { alert(`Index ${i} = ${values[i]}`) } }
 <input type="button" value="Submit" onclick="save([9, 8, 7])" />

或者,如果您想保留使用多個 arguments 調用 function 的方法(盡管count參數完全沒有必要),您可以將 arguments 解構為一個數組,如下所示:

 function save (...values) { for (let i = 0; i < values.length; i++) { alert(`Index ${i} = ${values[i]}`) } }
 <input type="button" value="Submit" onclick="save(9, 8, 7)" />

如果你真的想要那個count參數,你可以使用function save (count, ...values) As a side note, there is also arguments , which is an array-like object that holds all the arguments passed to your current function, so you could iterate over that as well.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM