Jquery代码工作正常,直到我包括严格模式

问题描述 投票:0回答:1

一段Jquery Code工作正常,直到“上级”告诉我必须在我的所有Javascript代码中包含严格模式。除了这段代码之外,我的main.js文件上的一切都运行正常。我无法记录错误,但每次激活脚本时我的控制台错误都会触发,它是一个Boostrap 4切换按钮,它会打开一个菜单,但菜单从上到下打开并且非常滞后。该按钮用于从右向左折叠。

$(function(){
    // mobile menu slide from the left
    $('[data-toggle="collapse"]').on('click', function() {
        $navMenuCont = $($(this).data('target'));
        $navMenuCont.animate({'width':'toggle'}, 280);
    });
})

控制台错误如下:

Uncaught ReferenceError: $navMenuCont is not defined
    at HTMLButtonElement.<anonymous> (main.js:61)
    at HTMLButtonElement.dispatch (jquery-3.3.1.js:5183)
    at HTMLButtonElement.elemData.handle (jquery-3.3.1.js:4991)
javascript jquery strict
1个回答
1
投票

来自MDN参考:

首先,严格模式使得不可能意外地创建全局变量。在正常的JavaScript错误输入中,赋值中的变量会在全局对象上创建一个新属性并继续“工作”(尽管未来可能会失败:可能在现代JavaScript中)。分配会意外地创建全局变量,而是在严格模式下抛出错误。

你需要声明你的$navMenuCont变量。例如:

var $navMenuCont = $($(this).data('target'));

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

© www.soinside.com 2019 - 2024. All rights reserved.