为什么我必须在函数内再次定义相同的变量? [关闭]

问题描述 投票:-2回答:1
此代码在循环中更改div的左侧位置。我停留在使它移动一段时间,然后尝试了一行代码。为什么我必须编写第2行的代码

divPos = numLeft + 'px'

再次在setInterval内部,使div移动。 

let numLeft = 60 let divPos = numLeft + 'px' let i=0 let reset let divVar = document.createElement("div") divVar.innerHTML = 'car' divVar.style.position = "relative" divVar.style.top = '60px' divVar.style.left = divPos divVar.style.border = "2px solid blue" divVar.style.display = "inline-block" document.body.appendChild(divVar) changePos() function changePos(){ reset = setInterval(()=>{ i++ if(i>12){ clearInterval(reset); } numLeft+=40 divPos = numLeft + 'px' divVar.style.left = divPos },300) }

javascript
1个回答
1
投票
JavaScript原语是不可变的,不能通过引用分配。

let divPos = numLeft + 'px'将字符串分配给divPos。该字符串是使用numLeft创建的,但是随后没有[[与它无关],因此,如果以后更改numLeft,则对divPos的值没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.