Javascript 我的全局变量不';t获取分配给<;的新值;输入>;要素

Javascript 我的全局变量不';t获取分配给<;的新值;输入>;要素,javascript,Javascript,在我的js文件中,当新值被赋予位于元素中的.value属性时,全局变量不会获得分配给它的新值,并且仍然给我默认值。 但当我在listener函数中声明变量时,它与获取value属性值的方法相同,新的值被分配给它 你能证明这种行为的原因吗? 先谢谢你 <input type="text" id="v" value="9"> <button onclick="my()">read</button> <script> var ff0 = docu

在我的js文件中,当新值被赋予位于元素中的.value属性时,全局变量不会获得分配给它的新值,并且仍然给我默认值。 但当我在listener函数中声明变量时,它与获取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>
为什么ff0和ff2不能获得相同的新值5??


阅读
var ff0=document.querySelector('#v').value
函数my(){
var ff2=document.querySelector('#v').value
警觉的(
'ff0>>'+ff0+'\n'+
'ff2>>'+ff2+'\n'
)
}

因为
var ff0=document.querySelector(“#v”).value
只执行一次-当页面加载
时,“ff0已被全局声明,因此将被填充一次”-我认为值得一提的是,
ff0
只设置一次的原因很简单,因为没有代码行在初始声明后尝试更改它。事实上,它是全局声明的,虽然是正确的,但似乎与不变的值无关。感谢你的时间和努力,我的朋友@koλzar这个想法现在很清楚了,感谢你的澄清@tyleropernote,在某些情况下,JavaScript的行为确实与你预期的一样。如果您编写了
var ff0=document.querySelector('#v')
首先,它的
.value
在开始时应该是9,但在my()函数中改为5。
ffo >> 9
ff2 >> 5