Javascript 检查每个变量的列表是否已设置

Javascript 检查每个变量的列表是否已设置,javascript,Javascript,我有一个数组,里面填充了如下变量的名称: var myVariables = [variable1,variable2,variable3,variable4]; 除此之外,还有没有一种简单的方法来测试我的代码中是否所有这些变量都被分配了一个值?如果其中一个变量没有定义,这将抛出一个引用错误,如Felix Kling在顶部评论中提到的。否则,如果它具有未定义的值,则可以检查数组是否包含未定义的值 return myVariables.indexOf(undefined) === -1; 不要

我有一个数组,里面填充了如下变量的名称:

var myVariables = [variable1,variable2,variable3,variable4];

除此之外,还有没有一种简单的方法来测试我的代码中是否所有这些变量都被分配了一个值?

如果其中一个变量没有定义,这将抛出一个引用错误,如Felix Kling在顶部评论中提到的。否则,如果它具有未定义的值,则可以检查数组是否包含未定义的值

return myVariables.indexOf(undefined) === -1;
不要抛出引用错误 如果执行下面的代码,您将得到一个ReferenceError,因为variable1从未定义过

const myArray=[variable1]我建议使用,通过这种方法,您不必迭代整个数组:

const hasEmpty = myVariables.some(v => typeof v === 'undefined');
您可以使用以下方法:

some方法测试数组中的某个元素是否通过 由提供的函数实现的测试

它可能比forEach方法更有效,因为一旦元素符合条件,它就会以某种方式停止短路迭代


例如,若要检查所有元素是否都>0,请将某些元素与反向条件一起使用,即:是否要检查它们是否都未定义?当前,您有一个数组,其中包含这些变量的值,而不是它们的名称。这与你的描述相矛盾。您现在真正拥有什么?@Kinduser Right[variable1]将variable1的值放入数组,而不是其名称。因此,如果这是您实际拥有的代码,那么您只是拥有一个值数组,而不是一个变量名数组。因此,我要求您澄清您实际拥有什么。变量在别处定义,或者根本不定义。如果未声明变量,那么尝试引用它将抛出ReferenceError。也就是说,[variable1,variable2,variable3,variable4]如果其中一个变量没有声明,就会抛出一个错误。您必须在引用它之前测试它的存在性。这比使用indexOf快吗?它的可读性肯定比较差。编辑:我想使用includes已经足够可读了。我没有考虑indexOf,也不知道基准测试。关于可读性,请检查includes版本:我甚至用only includes、best practice IMHO编辑过。isAllDefined是布尔值吗?它的范围是什么?我可以在脚本的任何地方使用它吗?是的,它是一个布尔值。对于范围来说,这是一个完全不同的问题。我如何使用这个的输出?我可以用hasEmpty,比如说,if/then吗?hasEmpthy的值是真还是假?正确,hasEmpty是一个布尔值,它的范围是什么?我可以在脚本中的任何地方使用它吗?这取决于许多外部因素—“使用严格”,它在模块中运行的上下文,在全局范围脚本中,以及您如何定义它,例如window.haspunt。。。vs.让hassempty。。。。。您当然可以将其提供给脚本的任何部分,或者在需要的时候和地点计算/设置它。答案简短,但它很好地解决了问题。同意该方法,尽管我会说它可能更有效,因为它不能保证是这样。确实如此。可以或应该更准确。
var isFailed = [0, 1, 2, 3, 4].some(x => x <= 0);