学习JavaScript闭包
在JavaScript语言精粹中,闭包被解释为“函数可以访问它被创建时所处的上下文环境"的机制。它与JavaScript“特殊”的作用域有很大关系。其原理为:函数是运行在定义他们的作用域中而不是调用他们的作用域中。
举例1 演示闭包:
举例2 演示作用域
举例3 演示作用域
在函数内没有使用var来定义变量的时候,myVariable成为了全局变量,成了window对象的一个属性。而在使用var的情况下,变量myVariable是函数myFunction的内部变量。再看一个例子。
举例4 演示闭包与作用域
除了使用var关键字,将变量包含在定义函数时的圆括号内,如var quo = function(status){ ... },与使用var关键字的效果相同。
参考资料:《JavaScript语言精髓》 《JavaScript DOM高级程序设计》 支付宝UED
举例1 演示闭包:
Code
举例2 演示作用域
<script type="text/javascript">
function myFunction() {
var myVariable = 'inside';
}
var myVariable = 'outside';
myFunction();
alert(myVariable); //将提示“outside”
</script>
function myFunction() {
var myVariable = 'inside';
}
var myVariable = 'outside';
myFunction();
alert(myVariable); //将提示“outside”
</script>
举例3 演示作用域
<script type="text/javascript">
function myFunction() {
//没有使用var
myVariable = 'inside';
}
var myVariable = 'outside';
myFunction();
alert(myVariable); //将提示“inside”
</script>
function myFunction() {
//没有使用var
myVariable = 'inside';
}
var myVariable = 'outside';
myFunction();
alert(myVariable); //将提示“inside”
</script>
在函数内没有使用var来定义变量的时候,myVariable成为了全局变量,成了window对象的一个属性。而在使用var的情况下,变量myVariable是函数myFunction的内部变量。再看一个例子。
举例4 演示闭包与作用域
Code
除了使用var关键字,将变量包含在定义函数时的圆括号内,如var quo = function(status){ ... },与使用var关键字的效果相同。
参考资料:《JavaScript语言精髓》 《JavaScript DOM高级程序设计》 支付宝UED
posted on 2009-10-11 22:09 followflows 阅读(190) 评论(0) 编辑 收藏 举报