我正在做一個前臺計算器專案,但我不太理解Javascript中的一個奇怪的行為。 這是我的腳本:
const keys = document. querySelectorAll(".number") 。
const screen = document.querySelector("#screen") 。
let number = screen.value;
keys.forEach((key) => {
key.addEventListener("click", (event) => {
let refresh = (number = key.textContent).toString() 。
console.log(number)。
screen.value = refresh;
});
});
誰能告訴我,如果我改變這一行,為什么?
screen.value = refresh;
用這個
number = refresh;
我在螢屏上的值沒有更新,但在我的控制臺中它卻在更新? 這不是兩個不同的名字來呼叫同一件事嗎?
謝謝你
uj5u.com熱心網友回復:
這是由字串變數被分配了一個值而不是一個參考所造成的。這意味著,當你呼叫let number = screen.value時,它只將number設定為screen.value在那一刻的值。但是如果你改變了其中的一個,另一個就不會改變。
這對于像數字、字串和布爾這樣的原始型別是真實的。物件和陣列變數是被分配的參考,這意味著通過一個變數改變物件將反映在指向同一物件的所有其他變數上。
uj5u.com熱心網友回復:
這是因為你使用的是這一行:
console.log(number)。
所以你將首先列印'number'變數,隨后你將更新這個變數的值,所以這就是問題所在
如果你想解決這個問題,你必須顛倒這幾行的順序,就像這樣:如果你想解決這個問題,你必須顛倒這幾行的順序。
screen.value = refresh;
console.log(number)。
我希望我有所幫助;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320429.html
標籤:
上一篇:我無法看到分類的中間結果
