-1 javascript
我对 Javascript 很陌生,并且有一个关于声明和访问变量的初学者问题。为什么 console.log 显示“text”的 textContent 已更改,但实际上并未更改?如果我不是在函数外部声明“文本”,而是在函数内部声明它,则可以使函数正常工作 - 然后实际的 textContent 发生变化
let text = document.querySelector("#text").textContent
function changeText() {
text = "Goodbye"
}
changeText()
console.log(text)Run Code Online (Sandbox Code Playgroud)
<p id="text">Hi</p>Run Code Online (Sandbox Code Playgroud)
本次作业:
let text = document.querySelector("#text").textContent
Run Code Online (Sandbox Code Playgroud)
存储in值的副本。和之间没有显式或隐式的联系。您知道有两个位置碰巧包含相同的值。document.querySelector("#text").textContenttexttextdocument.querySelector("#text").textContent
然后,您继续更新其中一个位置以包含不同的值:
text = "Goodbye"
Run Code Online (Sandbox Code Playgroud)
这对其他地方没有任何影响。
这也不是特定于 DOM 的。一般而言,变量和/或属性就是这种情况。这里还有一些例子:
let text = document.querySelector("#text").textContent
Run Code Online (Sandbox Code Playgroud)
text = "Goodbye"
Run Code Online (Sandbox Code Playgroud)
其技术术语是按值传递:如果将内存位置A(变量、属性等)分配/传递给内存位置B,则B会被分配A值的副本,而不是引用或指针到A。
另请参阅JavaScript 是按引用传递还是按值传递语言?
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |