1.javascript中可以隐式申明变量。当要注意隐式声明的变量总是被创建为全局变量。
变量作用域仅仅是在函数内部,故在外部调用时会报错(not defined error) function fun(){ var a=9; alert(a);//9 } fun(); //alert(a); not defined 出错 未使用var声明的变量将编程全局变量 function add(){ num=10; alert(num);//10 } add(); alert(num);//10
2.javascript中变量的作用域
var num=1000; alert(num);//1000 fun(); function fun(){ var num='a1000'; function fun1(){ alert(num);//undefined var num='b1000'; alert(num);//b1000 } fun1(); alert(num);//a1000 }
3.未声明变量和未赋值变量
在javascript中,未赋值变量的结果也是undefined
//未声明的变量与已声明的变量
var a; alert(a);//undefined alert(b);//not defined出错
4、例子
//第一种: var a = 'a'; function fn(){ b = 'b'; alert(a);//a alert(b);//b } fn(); alert(a);//a alert(b);//b //第二种: var a = 'a'; function fn1(){ //方法中其已经定义了一个变量a alert(a);//undefined var a = 'b'; alert(a);//b } fn1(); alert(a);//a //第三种: var a = 'a'; function fn1(){ //方法中其已经定义了一个变量a alert(a);//a a = 'b'; alert(a);//b } fn1(); alert(a);//b //第四种: function fn1(){ //方法中其已经定义了一个变量a alert(a);//not defined 出错 a = 'b'; alert(a);//不执行 } fn1(); //第五种 function fn1(){ alert(a);//undefined var flag = 1; if(flag){ var a = 1; } alert(a);//1 //说明在函数内部块级元素内部单独定义的变量,在整个函数内都是可以访问到的。 //因此,这就需要我们在命名变量时额外注意,避免出现参数冲突的问题。 } fn1(); alert(a);//not defined 出错
//第六种
var name = "The Window";
var object = {
name : "My Object",
getName : function(){
return function(){
return this.name;
};
}
};
alert(object.getName()());//The Window
//第七种
var name = "The Window";
var object = {
name : "My Object",
getName : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getName()());//My Object
备注:
关于声明与定义
声明:只是取个别名或者说是变量,并未分配存储空间
定义:不仅仅取个别名,而且为之分配了存储控件
声明与定义的最重要区别就是定义创建了对象并为之分配了内存,而声明却没有分配内存。