Javascript $(窗口).width();使用严格模式
Javascript $(窗口).width();使用严格模式,javascript,jquery,Javascript,Jquery,$(window.width()功能在不使用的情况下运行良好使用严格的模式。但是,这不是工作。使用后“使用严格的”模式 这里怎么了 (function($) { "use strict"; $('#menu .nav > li').on("mouseover", function() { $screensize = $(window).width(); if ($screensize > 991) { $(th
$(window.width()代码>功能在不使用的情况下运行良好使用严格的模式。但是,这不是工作。使用后“使用严格的”
模式
这里怎么了
(function($) {
"use strict";
$('#menu .nav > li').on("mouseover", function() {
$screensize = $(window).width();
if ($screensize > 991) {
$(this).find('> .dropdown-menu').stop(true, true).slideDown('fast');
}
$(this).bind('mouseleave', function() {
$screensize = $(window).width();
if ($screensize > 991) {
$(this).find('> .dropdown-menu').stop(true, true).css('display', 'none');
}
});
});
})(jQuery);
如果您使用的是严格模式,您需要确保使用var
关键字声明$screensize
,否则它会告诉您这是一个未定义的变量。这可能会停止代码的执行
首先,严格模式使得不可能意外地创建全局
变量。在普通JavaScript中,在赋值中错误键入变量
在全局对象上创建新属性并继续“工作”
(尽管将来可能会失败:在现代JavaScript中很可能)。
会意外创建全局变量的赋值
投入严格模式
我建议您使用浏览器的控制台调试器并熟悉它。它应该抛出uncaughtreferenceerror:$screensize未定义
如果使用严格模式,则需要确保使用var
关键字声明$screensize
,否则它会告诉您它是未定义的变量。这可能会停止代码的执行
首先,严格模式使得不可能意外地创建全局
变量。在普通JavaScript中,在赋值中错误键入变量
在全局对象上创建新属性并继续“工作”
(尽管将来可能会失败:在现代JavaScript中很可能)。
会意外创建全局变量的赋值
投入严格模式
我建议您使用浏览器的控制台调试器并熟悉它。它应该抛出未捕获引用错误:$screensize未定义
我认为问题不在于$(window.width()
)。问题可能是$screensize
没有声明为var。这里“工作不好”是什么意思?你有错误吗?我怀疑这是因为在声明$screensize
之前缺少var
关键字,因为严格模式,您试图在函数内部初始化var$screensize
(这被认为是错误的做法,但如果您不使用严格模式,javascript并不关心它,而是定义了一个新的全局var)但是通过使用严格模式,这将抛出一个错误,因此javascript无法工作。来源:我认为问题不在于$(window).width()
。问题可能是$screensize
没有声明为var。这里“工作不好”是什么意思?你有错误吗?我怀疑这是因为在声明$screensize
之前缺少var
关键字,因为严格模式,您试图在函数内部初始化var$screensize
(这被认为是错误的做法,但如果您不使用严格模式,javascript并不关心它,而是定义了一个新的全局var)但是通过使用严格模式,这将抛出一个错误,因此javascript无法工作。来源:@HarnishDesign这是你的问题,和我的评论一样。@HarnishDesign这是你的问题,和我的评论一样。