有没有办法访问它声明的函数之外的变量?
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
}
答案 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()之前在全局范围内声明此变量。