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是在编译期间就搞定了,所以执行时认为该函数已经定义。
这样对于函数判断是否定义可以更具体的用
来检查一个函数是否声明。对于作插件的程序可能会有用。
判断一个值是否未定义,就是判断值是否undefined可以通过typeof()这个方法来获取值的类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var a
if(typeof(a)==="undefined"){
//a为undefined类型
}
a = 123
if(typeof(a)==="number"){
//a为number类型
}
a={}
if(typeof(a)==="object"){
//a为object类型
}
a="abc"
if(typeof(a)==="string"){
//a为string类型
}
a=true
if(typeof(a)==="boolean"){
//a为boolean类型
}
a=function(){}
if(typeof(a)==="function"){
//a为function类型
}
a=[]
if(typeof(a)==="object"){
//值为数组的时候,typeof返回也是"object"
}
要判断值是否为数组,可以通过instanceof方法,判断一个值是否为另一个值的实例
a=[]
if(a instanceof Array){
//a为数组
}