JavaScript必知必会必知必会(九)九)function 说起说起 闭包问题闭包问题
function
函数格式
function getPrototyNames(o,/*optional*/ a)
{
a = a || [];
for(var p in o)
{
a.push(p);
}
return a;
}
caller
func.caller 返回函数调用者
function callfunc()
{
if(callfunc.caller)
{
alert(callfunc.caller.toString());
}else
{
alert("没有函数调用");
}
}
function handleCaller()
{
callfunc();
}
handleCaller();//返回 handler
callfunc();//没有函数调用,返回null,执行了《没有函数调用》
callee
匿名方法递归调用
alert( (function (x) {
if (x <= ) return ;
return x * arguments.callee(x - );
}()));//
scope
作用域大家都不陌生,今天就来说说闭包问题,深刻吃透闭包问题。
<script>
var global = "global scope";//这个是全局的作用域
function scope()
{
var scope = "local scope";//这个是局部的作用域
return scope;//返回的scope,是局部的变量
}
</script>
1、:定义的全局变量也能在函数内部访问、:定义的全局变量也能在函数内部访问。当定义的局部变量和全局变量名字相同时,局部变量的就会隐藏全局变量,
不会破坏全局变量的值。
var scope = "global scope";
function f()
{
var scope = "local scope";
return scope;
}
alert(f());//local scope
alert(scope);//global scope;
上面确实是很容易理解,对吧。