javascript严格模式下的全局变量
我不断得到错误: “未捕获的TypeError:无法读取未定义的属性'hasClass'” 我知道这与全局变量和范围有关,但我搞不清楚。任何帮助都将不胜感激javascript严格模式下的全局变量,javascript,this,global,Javascript,This,Global,我不断得到错误: “未捕获的TypeError:无法读取未定义的属性'hasClass'” 我知道这与全局变量和范围有关,但我搞不清楚。任何帮助都将不胜感激 jQuery(function($) { "use strict"; var global = this; var carousel = null; function mobileOnlySlider(carousel) { carousel = $('.woocommerce-product-gallery__wrapper
jQuery(function($) {
"use strict";
var global = this;
var carousel = null;
function mobileOnlySlider(carousel) {
carousel = $('.woocommerce-product-gallery__wrapper').slick({
// normal options...
infinite: false,
adaptiveHeight: true,
dots: true,
});//slick slider init
}//mobileOnlySlider function
mobileOnlySlider(global.carousel);
function resetSlick(carousel) {
$(window).on('resize', function() {
if ($(window).width() > 768 ) {
if (carousel.hasClass('slick-initialized')) {
carousel.slick('unslick');
}
else{
console.log("returned nothing.");
return;
}
}
else {
if (carousel.hasClass('slick-initialized')) {
//do nothing
return;
}
else{
mobileOnlySlider(global.carousel);
}
}
});//window resize
}//function resetclick
resetSlick(global.carousel);
})();//plain js version of $window ready
您正在局部范围内重新定义全局变量
var carousel = null;
function mobileOnlySlider(carousel) {
carousel = $('.woocommerce-product-gallery__wrapper').slick({
// normal options...
infinite: false,
adaptiveHeight: true,
dots: true,
});//slick slider init
}//mobileOnlySlider function
在这个方法中,carousel
是一个局部变量,而不是您所期望的全局变量——当您这样调用它时:
mobileOnlySlider(global.carousel);
全局变量不会更新
一个选项是从该方法返回值,并相应地更新变量
var carousel = null;
function mobileOnlySlider() {
return $('.woocommerce-product-gallery__wrapper').slick({
// normal options...
infinite: false,
adaptiveHeight: true,
dots: true,
});//slick slider init
}//mobileOnlySlider function
// elsewhere
carousel = mobileOnlySlider();
声明时是否尝试删除
var
?只需编写global=this;carousel=null代码>然后您应该能够访问it@Dinosan0908在严格模式下,这将被标记为错误。这段代码中存在多个问题global.carousel
与var carousel=null
不同。函数中的参数也不同。那么如何更新全局变量呢?我所尝试的一切都是未定义的。@ra的威力为什么不从方法调用返回它并更新全局变量呢?见UpdateThk you@Jamiec!这种方法奏效了。我现在觉得自己很愚蠢。