JS中如何判断一个变量是否已经声明?

JavaScript027

JS中如何判断一个变量是否已经声明?,第1张

//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("变量未声明,")

}

请检查!')}else{alert(sInvoiceDate)

} 2、第二种 if(window.sInvoiceDate){alert(sInvoiceDate) }else{alert("变量未定义!请检查!")} 后面这种:因为所有变量的对象都是window,所以也可以这样判断!这种做兼容时用的比较多,如ajax封装时。

看下面简单例子

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是在编译期间就搞定了,所以执行时认为该函数已经定义。

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

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