【问题标题】:is there something like isset of php in javascript/jQuery? [duplicate]在 javascript/jQuery 中有类似 isset of php 的东西吗? [复制]
【发布时间】:2011-05-13 00:28:52
【问题描述】:

javascript/jQuery 中有什么东西可以检查变量是否设置/可用?在 php 中,我们使用isset($variable) 来检查类似这样的内容。

谢谢。

【问题讨论】:

  • 你是指null检查还是dom可用性检查...
  • 什么作用?? isset 确实..在 php 中,我不知道这就是我问的原因
  • @gov isset — 确定变量是否已设置且不为 NULL - php.net/manual/en/function.isset.php
  • 好的,得到了​​一种空检查

标签: javascript php jquery isset


【解决方案1】:

不自然,不......但是,谷歌搜索得到了这个:http://phpjs.org/functions/isset:454

【讨论】:

  • +1。速度就是 Js 的一切...
【解决方案2】:

http://phpjs.org/functions/isset:454

phpjs 项目是一个受信任的来源。那里有很多 js 等效的 php 函数。用了很久了,目前没有发现任何问题。

【讨论】:

    【解决方案3】:

    typeof 将达到我认为的目的

    if(typeof foo != "undefined"){}
    

    【讨论】:

    • 但是请注意,typeof null == 'object' - 只是 JavaScript 的另一个怪癖。
    【解决方案4】:

    试试这个表达式:

    typeof(variable) != "undefined" && variable !== null
    

    如果变量已定义且不为空,则为真,这与 PHP 的 isset 的工作方式等价。

    你可以这样使用它:

    if(typeof(variable) != "undefined" && variable !== null) {
        bla();
    }
    

    【讨论】:

    • 我想你的意思是&& variable !== null
    • 不,我绝对是指 &&。该变量可能已定义但仍为空。不过,您对严格的类型检查是正确的,所以我会将其添加到我的答案中,谢谢。
    • 我简单地尝试了您的第二种选择。它没有成功,因为尝试使用未定义的参数调用自定义 isset() 函数在 FF4 中引发了异常。第一个选项对我有用。谢谢。
    • 您的函数可能会导致异常。 stackoverflow.com/questions/4231789/…
    • 我不认为“变量!== null 属于”这里。 variable = null 可以是具有重要意义的已定义值。我会将空检查推送到另一个“空”或“hasValue”函数。 isset 主要用于防止非实例化错误并设置默认值,而不是检查变量的实质。
    【解决方案5】:

    如果你想检查一个属性是否存在:hasOwnProperty 是要走的路

    而且由于大多数对象是其他对象的属性(最终导致window 对象),这可以很好地检查值是否已声明。

    【讨论】:

    • 聪明,但只有在您知道自己正在处理的对象时才有用。
    【解决方案6】:

    JavaScript isset() on PHP JS

    function isset () {
        // discuss at: http://phpjs.org/functions/isset
        // +   original by: Kevin van     Zonneveld (http://kevin.vanzonneveld.net)
        // +   improved by: FremyCompany
        // +   improved by: Onno Marsman
        // +   improved by: Rafał Kukawski
        // *     example 1: isset( undefined, true);
        // *     returns 1: false
        // *     example 2: isset( 'Kevin van Zonneveld' );
        // *     returns 2: true
        var a = arguments,
            l = a.length,
            i = 0,
            undef;
    
        if (l === 0) {
            throw new Error('Empty isset');
        }
    
        while (i !== l) {
            if (a[i] === undef || a[i] === null) {
                return false;
            }
            i++;
        }
        return true;
    }
    

    【讨论】:

    • 不起作用
    • 此解决方案适用于许多人。很可能,你犯了一些错误。请提供有关您的问题的更多详细信息,例如控制台输出或其他东西。
    【解决方案7】:

    问题在于将未定义的变量传递给函数会导致错误。

    这意味着您必须在将 typeof 作为参数传递之前运行它。

    我发现的最干净的方法是这样的:

    function isset(v){
        if(v === 'undefined'){
            return false;
        }
        return true;
    }
    

    用法:

    if(isset(typeof(varname))){
      alert('is set');
    } else {
      alert('not set');
    }
    

    现在代码更加紧凑和可读。

    如果您尝试从非实例化变量调用变量,这仍然会出错:

    isset(typeof(undefVar.subkey))
    

    因此在尝试运行之前,您需要确保对象已定义:

    undefVar = isset(typeof(undefVar))?undefVar:{};
    

    【讨论】:

    • 如果你像我一样懒惰并且你正在使用像 netbeans 这样的合适的 IDE。只需在您的代码模板中添加类似这样的内容: (abbreviation: isset) isset(typeof(${cursor})) 。像这样的小事可以为您节省大量时间。
    • 另一个 netbeans 快捷方式:(缩写:set)${variable} = isset(typeof(${variable}))?${variable}:{};
    【解决方案8】:

    你可以:

    if(variable||variable===0){
        //Yes it is set
        //do something
    }
    else {
        //No it is not set
        //Or its null
        //do something else 
    }
    

    【讨论】:

    • @user9 如果为 0,它将转到 else,因为 0 等于 false
    • 这可能是一种不希望的行为,与 isset 不相似
    【解决方案9】:

    这里:)

    function isSet(iVal){
     return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
    } // Returns 1 if set, 0 false
    

    【讨论】:

    • 您可能需要添加其他详细信息,说明为什么这会对 OP 有所帮助。
    • 是的,请添加您的代码的一些解释,它如何解决问题,以及 OP 缺少什么或做错了什么。这将有助于未来的其他人
    【解决方案10】:

    除了 @emil-vikström 的回答之外,检查 variable!=null 将适用于 variable!==null 以及 variable!==undefined(或 typeof(variable)!="undefined")。

    【讨论】:

      【解决方案11】:

      每个答案的某些部分都有效。我将它们全部编译成一个函数“isset”,就像问题所问的那样,并且像在 PHP 中一样工作。

      // isset helper function 
      var isset = function(variable){
          return typeof(variable) !== "undefined" && variable !== null && variable !== '';
      }
      

      这是一个如何使用它的用法示例:

      var example = 'this is an example';
      if(isset(example)){
          console.log('the example variable has a value set');
      }
      

      这取决于您需要它的情况,但让我分解每个部分的作用:

      1. typeof(variable) !== "undefined" 检查变量是否已定义
      2. variable !== null 检查变量是否为 null(有些人明确设置为 null 并且不认为设置为 null 是正确的,在这种情况下,删除这部分)
      3. variable !== '' 检查变量是否设置为空字符串,如果为您的用例设置了空字符串,则可以将其删除

      希望这可以帮助某人:)

      【讨论】:

        猜你喜欢
        • 2011-10-09
        • 2015-11-14
        • 1970-01-01
        • 2015-11-26
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多