asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
<script>
(function f(){alert(1)})(f=function(){alert(2)});
f(f=function(){alert(3)});
(f,f)(f=function(){alert(4)});
</script>
function表达式的函数名 其实是在此function内和外之间加了一节scope chain 函数名是在其上的
所以函数表达式和函数声明的__parent__才会不同

在函数自己的域上 除了eval的所有var声明都是在开始执行函数内容之前做的 而一个变量声明多少次都是一样的 所以 参数和var作用是一样的 没有先后之分
eval var直道执行时才声明 它也不会覆盖任何东西 因为重复声明和一次声明是一样的 但它的作用范围只在它执行之后

<script>
var test=function test(n){
    return n<1?1:test(n-1)*n;
}
var test2=test;
test=null;
alert(test2(3));//ie wrong,ff result 6
</script>


<script>
function test(n){
    return n<1?1:test(n-1)*n;
}
var test2=test;
test=null;
alert(test2(3));//ff ie both wrong
</script>
posted on 2007-12-30 08:23 汪杰 阅读(237) 评论(0)  编辑 收藏 引用 所属分类: javascript
只有注册用户登录后才能发表评论。

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 467637
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜