全局变量很顽固

Global variable is stubborn

为什么我的全局变量很顽固?

这是我的简化代码片段:

window.bVar = false;    
function iChange() {
          bVar = true;
          alert( bVar ); // 'true'
          }
// some event calls iChange function
window.onbeforeunload = alert( bVar ); // 'false'

警报始终显示 'false'(除非我在函数内警报)。

我也试过用var bVar = false设置全局变量。

为什么我的全局变量不会在函数范围之外改变?

这真的太短了,不能作为答案,这就是我在评论中写下它的原因,但您立即评估 alert(bVar) 而不是将其作为 onbeforeunload 侦听器的一部分进行评估。你需要这样的东西:

window.onbeforeunload = function() { alert(bVar); };

为了不那么简洁和更具体,我想调用另一个函数,不需要提醒。另一个函数将执行 .load 并将值写入数据库。那么这应该有效吗? ;因为它不传递全局变量的更新值:( 例如...

var bVar = "value";
window.onbeforeunload = function() { dosomethingelse( bVar ); } 
function dosomethingelse( bVar ) { $("#id").val( bVar ); }