从其声明的函数外部访问变量

时间:2014-12-14 00:09:52

标签: javascript jquery scope

有没有办法访问它声明的函数之外的变量?

var checkWidth = function () {
  var $width = $(window).width();
}

$(window).on('resize', checkWidth);

// access $width here with the value from the resize

解决方案:

var $width = $(window).width();

$(window).resize(function () {
  var $resizeWidth = $(window).width();

  updateWidth($resizeWidth);

});

function updateWidth(a) {
  width = a;

  // use the new width here
}

3 个答案:

答案 0 :(得分:1)

你实际上可以这样:

var width;

var checkWidth = function () {
    width = 150;
}

checkWidth();
console.log(width);

日志中的宽度为150

答案 1 :(得分:1)

实际上有两种方式。

您可以在函数之外声明它以在其中设置其范围,如下所示:

var $width;
var checkWidth = function () {
  $width = $(window).width();
}

$(window).on('resize', checkWidth);

或者,您可以省略声明以赋予其全局范围:

var checkWidth = function () {
  $width = $(window).width();
}

$(window).on('resize', checkWidth);

无论哪种方式,您现在都可以在函数外部访问它,并且在您调用函数之前它的值将为undefined

(对于第二个,由于ES5,您可能会获得ReferenceError:请参阅this question。)

答案 2 :(得分:0)

$ width变量仅存在于checkWidth函数的范围内。如果要在checkWidth范围之外访问checkWidth(),则必须在调用checkWidth()之前在全局范围内声明此变量。