闭包:兴趣,注意undefined这个数据类型
先看一个例子:
<script type="text/javascript">
var name = "Love Movie";
var object = {
name : "Love Music",
getName : function(){
alert(this.name);
}
};
alert(object.getName ());
</script>
这个例子会弹出什么东西?
会弹出“Love Music”,"undefined"
打印undefined的原因仔细思考下。
<script type="text/javascript">
var name = "Love Movie";
var object = {
name : "Love Music",
getName : function(){
alert(this.name);
}
};
var a = object.getName();
alert(a);
</script>
闭包:局部变量和全局变量的区分
<script type="text/javascript">
var name = "Love Movie";
var object = function() {
var name = "Love Music"; //(A)
};
function init() {
object();
}
init();
alert(name);
</script>
会打印出Love Movie,因为(A)处的name是object对象的局部变量,外部是无法访问的。
如果去除(A)处的var,结果又是如何?Love Music
如果在一个函数中,用var定义变量,那么这个变量将是这个函数的局部变量,并且外部的函数无法调用。
那么如果想要有属于自己函数的变量,一定要在函数中给这个变量增加一个 var,否则将会默认为全局变量。
提问,那么我们如何调用局部变量呢?
<script type="text/javascript">
var name = "Love Movie";
var object = {
name : "Love Music", //(A)
getName : function() {
return this.name;
}
};
alert(object.getName());
</script>