我遇到了這個問題,我嘗試在函式內設定全域變數并使用全域宣告的字串和所述變數的連接。
在方法內部檢查時,變數已正確設定,但在連接的字串中未檢測到。這背后的原因可能是什么。
const axios = require('axios').default;
const express = require('express');
let environment;
let myUrl = `https://ets-tst-${environment}.mydomain.com/health`
app.get('/', function (req, res) {
environment= 'dev'
console.log(environment) //prints dev
console.log(myUrl) //prints https://ets-tst-undefined.mydomain.com/health
});
uj5u.com熱心網友回復:
environment正如您在Mohamad 回答中所說的那樣,myUrl因此myUrl評估environment的時間目前未定義。
但是,如果您想動態更改myUrl,可以這樣做:
let environment;
let myUrl = (env) => `https://ets-tst-${env}.mydomain.com/health`
app.get('/', function (req, res) {
environment= 'dev'
console.log(environment) //prints dev
console.log(myUrl(environment)) //prints https://ets-tst-dev.mydomain.com/health
});
這里的 myUrl 是一個箭頭函式,它接受一個env字串作為引數并回傳格式化的 url。因為現在在myUrl()呼叫箭頭函式時會評估格式化的 url 字串!
你也可以這樣做:
let environment;
let myUrl = () => `https://ets-tst-${environment}.mydomain.com/health`
app.get('/', function (req, res) {
environment= 'dev'
console.log(environment) //prints dev
console.log(myUrl()) //prints https://ets-tst-dev.mydomain.com/health
}
在這里,您不必傳遞env引數,因為當被呼叫時,它會讀取已更新到正上方myUrl的當前值。environment'dev'
但我不建議這樣做,因為如果您不跟蹤environmentvar 的更新,在這種情況下讀取全域變數來創建字串可能會導致不需要的行為。
這被稱為“副作用”,您應該按照此處所述避免它
uj5u.com熱心網友回復:
您在無法在變數中設定值environment之后myUrl設定,您可以在此之前設定,例如:
const axios = require('axios').default;
const express = require('express');
let environment = 'dev';
let myUrl = `https://ets-tst-${environment}.mydomain.com/health`
app.get('/', function (req, res) {
console.log(environment) //prints dev
console.log(myUrl) //prints https://ets-tst-undefined.mydomain.com/health
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/497434.html
標籤:javascript 节点.js
上一篇:TypeError:在函式中使用狀態值后,無法分配給物件的只讀屬性“值”
下一篇:單擊其他div時關閉Modal
