//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是在编译期间就搞定了,所以执行时认为该函数已经定义。
这样对于函数判断是否定义可以更具体的用
来检查一个函数是否声明。对于作插件的程序可能会有用。