Javascript 我无法理解我在网上找到的代码

Javascript 我无法理解我在网上找到的代码,javascript,jquery,Javascript,Jquery,我有一个问题,我在互联网上找到了这个用于粘性导航的脚本,我不明白为什么行'var Scroll Y=$(窗口)。scrollTop();'不能超过“var stickyNav=function(){” 谢谢你的帮助:) $(文档).ready(函数(){ var NavY=$('.nav').offset().top; var stickyNav=函数(){ var ScrollY=$(window.scrollTop(); 如果(滚动>海军){ $('.nav').addClass('sti

我有一个问题,我在互联网上找到了这个用于粘性导航的脚本,我不明白为什么行'var Scroll Y=$(窗口)。scrollTop();'不能超过“var stickyNav=function(){”

谢谢你的帮助:)


$(文档).ready(函数(){
var NavY=$('.nav').offset().top;
var stickyNav=函数(){
var ScrollY=$(window.scrollTop();
如果(滚动>海军){
$('.nav').addClass('sticky');
}否则{
$('.nav').removeClass('sticky');
}
};
stickyNav();
$(窗口)。滚动(函数(){
stickyNav();
});
});

ScrollY
计算为距
$(窗口)
对象顶部的距离,因此每次用户滚动时都需要重新计算,因为它不是一个在开始时设置的常量变量,而不像
NavY
是导航与窗口顶部之间的距离


当用户开始在
.scroll()
事件中滚动时,调用函数
stickyNav()

因为它必须在滚动过程中获取实际位置,因为将一行代码从函数内部移动到函数外部(或相反方向)更改代码的结构。基本上,当您修改代码时,代码会变得不同。是的,
stickyNav()
函数在scroll上执行,因此从顶部开始的当前滚动位置需要在触发滚动的点处动态确定。在此点之前缓存的数据是多余的。我会稍微担心使用该作者的代码,因为它们1)不遵循变量的通用命名约定,2)它们不了解如何使用函数引用。它应该是
$(窗口)。滚动(stickyNav);
注意:如果对代码应用一致的缩进,则更容易理解其结构。
 <script>

 $(document).ready(function() {
       var NavY = $('.nav').offset().top;

       var stickyNav = function(){
       var ScrollY = $(window).scrollTop();

       if (ScrollY > NavY) { 
           $('.nav').addClass('sticky');
       } else {
           $('.nav').removeClass('sticky'); 
       }
   };

    stickyNav();

    $(window).scroll(function() {
        stickyNav();
    });
});

</script>