在我的js文件中,当将新值赋予位于元素中的.value属性,并且仍为我提供默认值时,全局变量不会获得为其分配的新值。
但是当我在侦听器函数中声明具有相同方法以获取value属性值的变量时,会将新值分配给它
您能否说明这种现象的原因?
并预先感谢

<input type="text" id="v" value="9">

<button onclick="my()">read</button>

<script>
  var ff0 = document.querySelector('#v').value

  function my(){
  var ff2 = document.querySelector('#v').value
  alert(

    'ff0 >> ' + ff0 + '\n' +

    'ff2 >> ' + ff2 + '\n'
    )
}
</script>


如果我给(5)输入元素并单击按钮,则警报消息将为

ffo >> 9
ff2 >> 5


为什么ff0和ff2都没有获得相同的新值5?

最佳答案

<input type="text" id="v" value="9">

<button onclick="my()">read</button>

<script>
  var ff0 = document.querySelector('#v').value

  function my(){
  var ff2 = document.querySelector('#v').value
  alert(

    'ff0 >> ' + ff0 + '\n' +

    'ff2 >> ' + ff2 + '\n'
    )
}
</script>





ff0已被全局声明,因此将其填充一次,然后将其打印出来就可以了。

ff2的行为完全不同,实际上它是在函数内部局部声明的,单击按钮时会触发同样的事情。然后,始终使用输入的数据刷新变量。

09-25 19:11