簡體   English   中英

我怎樣才能實現類似於 javascript 中的字符串指針的東西?

[英]How can I achieve something similar to a pointer to a string in javascript?

javascript中有沒有類似指向字符串指針的概念? 或者這將如何完成?

let s1 = "hi";
let s2 = "bye";

// I want to write my code like this [,].forEach();
// This is the bit where I want s1 and s2 in the [,] array to actually be pointers to a string
[s1,s2].forEach(s => {if(s.length < 3) s += "*";});

// I want console.log(s1) === "hi*"
// I want console.log(s2) === "bye" (unchanged)

Javascript 沒有指針。

但是您可以將一個值包裝在 object 中,然后傳遞對該 object 的引用。

 let s1 = { value: "hi" }; let s2 = { value: "bye" }; [s1,s2].forEach(s => { if(s.value.length < 3) s.value += "*"; }); console.log(s1.value) console.log(s2.value)

這可能是您最接近這種行為的地方。

除非您特別引用標識符,否則您不能重新分配單個標識符。 所以給出

let s1 = "hi";

使console.log(s1)顯示其他內容的唯一方法是使用一行代碼

s1 = // something else

當然,字符串是不可變的——對於字符串,您必須重新分配它,因為您不能改變它。

我想您可以將字符串放入數組或 object 中,然后檢查它:

 const strings = { s1: 'hi', s2: 'bye', }; for (const [key, str] of Object.entries(strings)) { if (str.length < 3) { strings[key] += '*'; } } console.log(strings.s1);

我想我自己找到了解決方案。

如果這是好的做法,誰能發表評論?

它使用 ES6 中的新事物,您可以在其中分配事物[s1, s2] =

let s1 = "hi", s2 = "bye";
[s1, s2] = [s1, s2].map(s => s + (s.length < 3 ? "*" : ""));

在 javascript 中沒有“指針”,訪問局部變量的唯一方法是通過邪惡的 function eval()

 { let s1 = "hi"; let s2 = "bye"; ["s1","s1"].forEach(s => { let n = eval(s); if (n.length < 3) eval(s + ' += "*"'); }); console.log(s1,s2); }

暫無
暫無

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

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