JS中的范围:这些变量不应该是全局的,而是在没有"var"或"let"的情况下声明的。为什么?



新手在这里。我正在使用一些JavaScript(在本例中为JQuery(,旨在在单击按钮时显示页面上的元素。

它看起来像一些变量(例如。"$lis"、"最小"、"最大"(不使用"let"或"var"声明。我的理解是这会将它们设置为全局变量,但在这种情况下,我认为没有任何理由将它们设置为全局变量。

有人可以帮助我理解为什么"$lis"、"最小"和"最大"不包括"var",但"可见"包含?谢谢!

$( document ).ready(function() {
jQuery(function($) {
$lis = $('.blog-page-post'); 
min = 2;
max = $lis.length;
var visible = min;
function showUpToIndex(index) {
$lis.hide();
$lis.slice(0, index).show();
}
function disableButtons(){
if (visible >= max){
visible = max;
$('.button').hide();
}
else
{
$('.button').show();
}
}
showUpToIndex(visible);
disableButtons();
$('.button').click(function(e) {
e.preventDefault();
visible = visible + 2;
disableButtons();  
showUpToIndex(visible);
});
});
});

您必须使用严格(严格模式 - MDN(来处理这些边缘情况。

在您的情况下,当您像这样分配给未声明的变量时:

abc = true

然后它转换为:

window.abc = true

最新更新