如何判断JS变量是否定义

JavaScript021

如何判断JS变量是否定义,第1张

判断变量是否初始化

var a

if(a){

alert("已初始化")

}else{

alert("未初始化")

}

确定当 a = false,判断是错误的

判断变量是否定义:

if(b){

alert("已定义")

}else{

alert("未定义")

}

确定当 b = false,判断是错误的

一般都是这么判断的,标准的是:

if (typeof(a) == "undefined") {

alert(" 未定义 或者 未初始化")

}

看下面简单例子

if(typeof(VAL1) == 'undefined') {

var VAL1 = "now defined"}else {alert("already defined")}

alert("VAL1=" + VAL1)

通过判断typeof(VAL1) == 'undefin'可以知道某变量是否定义。顺便提一下,javascript里面没有block的概念,所以尽管VAL1是在if语句种定义的,在外面仍然可以访问。

但是注意如果某个var是在函数内定义的,那么该变量则是该函数的局部变量。

再看下面的例子

if(typeof(FUN1) == 'undefined') {

alert("now define the FUN1")

function FUN1() {

alert("this is FUN1")}}else {alert("already defined")}

正确答案应该是alert("already defined")。

函数和变量不同,对于funtion 这个关键字,javascript是在编译期间就搞定了,所以执行时认为该函数已经定义。

这样对于函数判断是否定义可以更具体的用

来检查一个函数是否声明。对于作插件的程序可能会有用。

//var va

//var va = null

//var va = 'xxxx'

try{

// 已经声明

// 判断是否已经定义

if (va === undefined){

// 不能使用 ==,因为当 "var va = null"时 被判定为未定义是错误的。

//if (typeof va === 'undefined'){ // 这种方式也是不可取的。

// 未定义

window.console &&console.log("变量未定义.")

}else {

// 已经定义了,可能为null

window.console &&console.log("变量已定义.")

}

} catch(e){

// va 未声明

window.console &&console.log("变量未声明,")

}