如何在JavaScript中检查未定义的变量

2020/09/19 13:01 · javascript ·  · 0评论

我想检查变量是否已定义。例如,以下引发未定义的错误

alert( x );

如何捕获此错误?

在JavaScript中,null是一个对象。不存在的东西还有另一个价值undefinedDOM null在几乎所有无法在文档中找到某些结构的情况下都会返回,但是在JavaScript本身中undefined是所使用的值。

第二,不,没有直接对等的内容。如果您确实要专门检查null,请执行以下操作:

if (yourvar === null) // Does not execute if yourvar is `undefined`

如果要检查变量是否存在,则只能使用try/ 来完成catch,因为typeof它将未声明的变量和声明为的变量的值undefined等同。

但是,检查是否声明一个变量不是undefined

if (yourvar !== undefined) // Any scope

以前,必须使用typeof运算符安全地检查未定义的内容,因为可以undefined像变量一样重新分配原来的样子是这样的:

if (typeof yourvar !== 'undefined') // Any scope

undefined可重新分配的问题已在2009年发布的ECMAScript 5中得到修复。现在,您可以安全地使用===!==进行测试,undefined不使用情况下typeof,它undefined已经被只读了一段时间。

如果您想知道成员是否独立存在,但不在乎其值是什么:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

如果您想知道变量是否为

if (yourvar)

资源

真正测试变量是否唯一的唯一方法undefined是执行以下操作。请记住,未定义是JavaScript中的对象。

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

该线程中的其他一些解决方案会让您相信即使定义了变量,该变量仍未定义(例如,值为NULL或0)。

从技术上讲,正确的解决方案是(我认为):

typeof x === "undefined"

有时您可能会变得懒惰并使用

x == null

但这允许未定义的变量x和包含null的变量x都返回true。

一个更简单,更速记的版本是:

if (!x) {
   //Undefined
}

要么

if (typeof x !== "undefined") {
    //Do something since x is defined.
}

我经常这样做:

function doSomething(variable)
{
    var undef;

    if(variable === undef)
    {
         alert('Hey moron, define this bad boy.');
    }
}

您还可以使用三元条件运算符:

var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);

//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);

错误告诉您x甚至不存在!尚未声明,与分配值不同。

var x; // declaration
x = 2; // assignment

如果声明了x,则不会出错。您会收到一条警告,说undefined是因为x存在/已被声明但尚未分配值。

要检查变量是否已声明,可以使用typeof,任何其他检查变量是否存在的方法都会引发与您最初遇到的错误相同的错误。

if(typeof x  !==  "undefined") {
    alert(x);
}

这是在检查存储在中的值的类型x它只会返回undefinedx,如果它没有被申报或被宣布和尚未分配。

void操作者返回undefined任何参数/表达传递给它。因此您可以根据结果进行测试(实际上,一些缩小程序将您的代码从更改undefinedvoid 0来保存几个字符)

例如:

void 0
// undefined

if (variable === void 0) {
    // variable is undefined
}

我经常使用最简单的方法:

var variable;
if (variable === undefined){
    console.log('Variable is undefined');
} else {
    console.log('Variable is defined');
}

编辑:

如果不初始化变量,将引发异常“ Uncaught ReferenceError:变量未定义...”

另一个潜在的“解决方案”是使用window对象。在浏览器中时,它避免了参考错误问题。

if (window.x) {
    alert('x exists and is truthy');
} else {
    alert('x does not exist, or exists and is falsy');
}

我们可以检查undefined如下

var x; 

if (x === undefined) {
    alert("x is undefined");
} else {
     alert("x is defined");
}

只需执行以下操作:

function isNotDefined(value) {
  return typeof value === "undefined";
}

并这样称呼:

isNotDefined(undefined); //return true
isNotDefined('Alireza'); //return false

接受的答案是正确的。只是想添加一个选项。您也可以使用try ... catch块来处理这种情况。一个怪异的例子:

var a;
try {
    a = b + 1;  // throws ReferenceError if b is not defined
} 
catch (e) {
    a = 1;      // apply some default behavior in case of error
}
finally {
    a = a || 0; // normalize the result in any case
}

请注意catch块,这有点混乱,因为它创建了块级范围。而且,当然,该示例已极大地简化了回答问题的过程,没有涵盖错误处理的最佳实践;)。

我使用一个小函数来验证已声明的变量,这确实减少了我的javascript文件中的混乱情况。我添加了一个值检查,以确保该变量不仅存在,而且还被分配了一个值。第二个条件检查该变量是否也已实例化,因为如果已定义该变量但未实例化(请参见下面的示例),则在尝试在代码中引用它的值时,它仍然会引发错误。

未实例化- var my_variable;实例化-var my_variable = "";

function varExists(el) { 
  if ( typeof el !== "undefined" && typeof el.val() !== "undefined" ) { 
    return true; 
  } else { 
    return false; 
  } 
}

然后,您可以使用条件语句来测试变量是否已定义并实例化,如下所示...

if ( varExists(variable_name) ) { // checks that it DOES exist } 

或测试它是否尚未定义和实例化使用...

if( !varExists(variable_name) ) { // checks that it DOESN'T exist }
本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhongjianchaweidingyidebianliang.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!