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这是你的问题,和我的评论一样。