在函数内设置全局范围变量

时间:2015-01-23 11:30:10

标签: javascript jquery angularjs scope onload

我正在尝试根据元素的高度设置动画触发器。该项目是使用AngularJS构建的,但我遇到的问题似乎真的很奇怪。我正在尝试在图像加载时设置imgH变量。在我的onload函数中,日志返回正确的图像高度并设置全局变量imgH。在我的onload函数之后,console log命令返回imgH = undefined

var imgH;
        $('.step-image').on('load',function(){
            imgH = $(this).height();
            console.log(imgH);
        });
console.log(imgH);

1 个答案:

答案 0 :(得分:2)

变量设置完毕,当你最后console.log完成时,尚未设置

以下是代码运行的顺序:

  1. var imgH; - 创建初始值为undefined
  2. 的全局
  3. $('.step-image').on('load', function ...) - 设置处理程序,但尚未调用该函数。
  4. console.log(imgH);(位于底部) - 显示undefined,因为尚未为imgH分配值。
  5. 稍后,当图片加载时,会调用处理函数并设置imgH
  6. console.log(imgH);(在处理函数内) - 显示值。