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

时间:2020-06-05 14:04:52

标签: javascript

此代码在循环中更改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)
}

1 个答案:

答案 0 :(得分:1)

JavaScript原语是不可变的,不能通过引用分配。

cv::Matcv::imwrite()分配一个字符串。该字符串是使用let divPos = numLeft + 'px'创建的,但随后没有任何关联,因此,如果您以后更改divPos,则它对numLeft的值没有影响。