![](/img/trans.png)
[英]Pass a global variable to a function for reassignment in javascript
[英]JavaScript function - pass variable and create global variable from it
我創建了這個功能
function calc (a, b, variableName){
variableName = a * b;
}
點是多個a和b並創建全局變量
calc(2, 5, first);
calc(3, 5, second);
第一個函數調用應為first = 10; 第二次通話應為秒= 15;
但是它不起作用,如何獲取全局變量並在函數調用中定義其名稱?
讓函數返回值,然后將函數調用的結果分配給變量。
function calc (a, b){
return a * b;
}
first = calc(2, 5);
second = calc(3, 5);
JavaScript是按值傳遞的 。 但是使用var
聲明的全局變量(不是let
或const
) 在全局對象 (瀏覽器中的window
)上表示 ,並且相反(也就是在全局范圍內定義全局對象的屬性)也是可能的。
因此,只需將要更改的變量的名稱(而不是值)傳遞為字符串即可,然后更改全局對象上的相應屬性。
請記住,除非對應用程序絕對必要,否則污染全局范圍通常不是一個好主意。
const alter = (prop, val) => Object.assign(window, { [prop]: val }); // Define a global variable var test = 1; // Alter the global variable alter('test', 2); console.log(test); // Create a new global variable alter('hello', 'world'); console.log(hello);
此概念適用於您的特定示例:
function calc(a, b, variableName) { window[variableName] = a * b; } calc(2, 5, 'first'); calc(3, 5, 'second'); console.log(first, second);
確實不建議使用...,但是如果在Web瀏覽器中執行此操作,則可以將它們附加到window
對象,然后按名稱直接可以使用它們。 請注意,變量名稱必須作為字符串傳遞:
function calc (a, b, variableName){ window[variableName] = a * b; } calc(2, 5, 'first'); calc(3, 5, 'second'); console.log(first); console.log(second);
有多種方法可以做到這一點。 首先就是您要描述的內容,但這並不是一個好主意。
▶ node
> global.a = 5
5
> a
5
節點中的global
對象使其成為全局范圍內的所有子代。
與Tiny Giant所描述的相同,只是用於后端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.