一段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)
来自MDN参考:
首先,严格模式使得不可能意外地创建全局变量。在正常的JavaScript错误输入中,赋值中的变量会在全局对象上创建一个新属性并继续“工作”(尽管未来可能会失败:可能在现代JavaScript中)。分配会意外地创建全局变量,而是在严格模式下抛出错误。
你需要声明你的$navMenuCont
变量。例如:
var $navMenuCont = $($(this).data('target'));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode