【问题标题】:How to check if a variable exists in jQuery?如何检查jQuery中是否存在变量?
【发布时间】:2014-01-30 01:41:26
【问题描述】:

如果不存在,有没有办法在 jQuery / JavaScript 中创建变量?

我试过了:

    if (moving.length<0) {
        moving=false;
    }

    if (moving=='undefined') {
        moving=false;
    }

但从逻辑上讲,这一切都失败了,因为对变量的初始检查已经未定义。

希望大家帮忙:)


编辑

第一个答案工作正常,但我的问题继续存在。

$.fn.animation = function() {
    if (typeof moving == 'undefined') {var moving = false;};

    if(moving===false){
        var moving=true;
        console.log('test');
    };      
};


$(window).scroll(function(){
    if($(window).scrollTop() < scrollpos){
        elm.animation();
    }
    scrollpos=$(window).scrollTop();
});

在此设置中,“测试”会不断记录,即使我记录移动设置为 true,if 仍然会被忽略。

所以我想要存档的是每次滚动元素时都会检查它是否已经动画。如果是这样,请不要制作动画。

基本上是一个队列。

【问题讨论】:

    标签: jquery variables exists


    【解决方案1】:

    你试过了吗

    if (typeof moving == 'undefined') var moving = false;
    

    在某些情况下我会使用

    var moving = typeof moving == 'undefined' ? false : moving;
    

    这基本相同,但对我来说,在某些情况下看到变量设置为它的原始值或false(如果未声明)更具可读性,但第一个版本更常见。

    编辑:

    这是检测滚动的方法

    var scrolled = false;
    
    $(window).on('scroll', function() {
        scrolled = true;
    });
    
    //later
    
    if (scrolled) {
        // do stuff
    }
    

    【讨论】:

    • 第一个解决方案工作正常,但我仍然无法实现我想要的。基本上我在窗口滚动事件上执行一个函数,它应该为我设置一个变量,如果设置了这个变量,我会检查它并在“if”中将其更改为 true。
    • @StefanHövelmanns - 在答案中添加了一些内容,这就是你想要做的吗?
    • 为什么不var moving = moving || false ?我在问,@adeneo,我想找出你的解决方案的不同之处
    • @steo - 对于这个例子,或者任何只使用布尔值的例子,都是一样的,但是对于更复杂的值,按位和逻辑运算符的工作方式有很大的不同,所以我使用了逻辑这里的三元条件,因为它等于逻辑 if 条件,如果使用其他数据类型不会导致问题。
    • 也就是说,我自己经常使用按位 OR,但你必须知道你在使用什么,以及它是否会按位运算符按计划工作。
    【解决方案2】:
    if( typeof moving === 'undefined' )
    {
        var moving;
    
        moving = false;
    }
    

    会起作用的。

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 2010-10-25
      • 2011-08-18
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2015-12-01
      • 2014-09-08
      相关资源
      最近更新 更多