js 匿名函数的问题
var y = "global";
function factory() {
var y = "local";
return function(){return y;}; //第5行
//return new Function ("return y");//第6行
}
alert(factory()());
</script>
---------------------------------------------
上述代码会输出:local
如果把第5行注释掉,把第6行放开,那么输出:global
我想问问这是什么原因?这里有没有闭包的概念在里面?这两种
方式返回的都是匿名函数,它们的区别在哪里?请
各位大虾解答一下,谢谢!
相关推荐
JS匿名函数内部this指向问题详析
前言 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢? this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 1.案例中,第一个say打出来的是Alan,而第二个则是window var name = 'window' var person = { name :'Alan', sayOne:function () { console.log(this.name) }, sayTwo:function () { return function () { conso
一个关于javascript匿名函数的问题分析
一个关于javascript匿名函数的问题分析,学习js的朋友可以参考下
不使用 JS 匿名函数理由
本文给大家分析了不使用js匿名函数的三大理由,匿名函数的作用是避免全局变量的污染以及函数名的冲突,关于js匿名函数的三大理由大家参考下本
JS 第16章 匿名函数和闭包
JS中的匿名函数和闭包,详细解释了大家的疑惑,提升大家对的JS的进一步的理解!
javascrpt绑定事件之匿名函数无法解除绑定问题
经常听到有人说,匿名函数绑定事件不好控制啊,无法解除绑定啊等等等等,一直很奇怪谁说的不能解除绑定。 下面来实现click事件2次后,自动解除绑定。 看代码: 代码如下: var dom=document.getElementById(“test”),clickt=0; dom.addEventListener(“click”,function(e){ clickt++; alert(‘你摸了我’+clickt+’下了。最多摸2下哦’); if(clickt>=2){ this.removeEventListener(e.type,arguments.callee,false); } });



