JS的范围:这些变量不应是全局变量,但应声明为不带“ var”或“ let”。为什么? [重复]

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

看起来有些变量(例如“ $ lis”,“ min”,“ max”)没有用“ let”或“ var”声明。我的理解是,这会将它们设置为全局变量,但是在这种情况下,我认为没有任何理由将它们设置为全局变量。

有人可以帮助我理解为什么“ $ lis”,“ min”和“ max”不包含“ var”,但是包含“ visible”吗?谢谢!

$( 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);
        });
    });
    });
评论
wrerum
wrerum

You have to use use strict (Strict Mode - MDN) to handle these edge cases.

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

abc = true

然后将其转换为:

window.abc = true

点赞
评论