【问题标题】:Checking if variable exist JavaScript & jQuery in best and quick and smallest way以最佳、快速和最小的方式检查变量是否存在 JavaScript 和 jQuery
【发布时间】:2020-09-05 14:25:39
【问题描述】:

大家好,我有一些 jQuery-JavaScript 代码,它是由一些未定义的变量生成的。

我试图通过执行此代码来跳过 (undefined) 错误:

if(typeof undefined_var !== "undefined"){
    /*My code is here*/
}else{
    /*create variable*/
    /*My code is here*/
}

但问题是我有很多变量,我必须使用这样的大代码:

if(typeof undefined_var1 !== "undefined" && typeof undefined_var2 !== "undefined" && typeof undefined_var3 !== "undefined" /* && more */ ){

它没有优化,我正在寻找比它更好的东西:

if(undefined_var1 && undefined_var2 && undefined_var3)

还有吗?

【问题讨论】:

标签: javascript jquery variables undefined exists


【解决方案1】:

您可以创建一个包含所有这些变量的数组,然后创建一个将该数组作为参数的函数。然后在函数内部循环使用条件(if 语句)来确定数组是否为假。例如 arr.reduce((bln, myVar) => typeof myVar === 'undefined' && bln, true)。调用该函数,它将根据是否未定义返回 true 或 false。

var _0;
var _1;
var _2 = 'not undefined';
var _3 = 'again not undefined';

const test0 = [_0, _1]; //should return true (contains undefined)
const test1 = [_2, _3]; //should return false (doesn't contain undefined)
const test2 = [_0, _1, _2, _3]; //should return true (contains undefined)

function containsUndefined(arr){
  //loop array to determine if any are undefined
  return arr.reduce((bln, myVar) => typeof myVar == 'undefined' && bln, true);
}

console.log('test0', containsUndefined(test0));
console.log('test1', containsUndefined(test1));
console.log('test2', containsUndefined(test2));

【讨论】:

  • 函数中的arguments对象中的“创建数组”不是已经为您完成了吗? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 在这种情况下,这将是数组中的数组。 arguments[0] 将包含一个数组。此外,正如那篇 mdn 文章中一样,它建议我们使用 '...' rest 而不是参数,现在我们有了 ES6。由于您在 console.logs 内联定义了 test0、test1、test2,因此这种方式会使代码的可读性降低
【解决方案2】:

在定义变量的任何时候,将它们放到单个对象上,然后您所要做的就是检查该对象是否存在:

if (!window.myObj) {
  // Define properties:
  window.myObj = {
    prop1: 'val1',
    prop2: 'val2',
    // ...
  };
}
// proceed to use `window.myObj.prop1`, etc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2021-12-28
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多