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