簡體   English   中英

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聲明的全局變量(不是letconst在全局對象 (瀏覽器中的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.

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