js 内部函数访问外部函数公共变量

代码如下:varobject=newfunction(){varname1="aaa";this.name2="bbb";this.innerFunc=function(... 代码如下:
var object = new function(){
var name1 = "aaa";
this.name2 = "bbb";
this.innerFunc = function(){
var inner1 = "inner1";
this.inner2 = "inner1";
return function getOut(){
alert(name1);
alert(name2);
}
}
this.getInner = function(){
alert(inner1);
}
}
alert(object.innerFunc()()); //报错 name2未定义
alert(object.getInner());
内部函数不是能访问外部函数的所有成员么?
展开
 我来答
弥勒不似佛
2012-05-15 · TA获得超过2700个赞
知道小有建树答主
回答量:521
采纳率:0%
帮助的人:339万
展开全部
话是这么说没错,不过你要明白js的作用域才行。js没有块作用域,只有函数作用域,就是说一个函数内部是一个作用域,如果它包含在其它函数内,那么它可以用外部的变量,但是外部不能用它的变量;简单的说嵌套的函数里,作用域也还是嵌套的。
name2未定义,这个很明显,就不说了;this.getInner很明显在this.innerFunc外部,当然不能利用里面的函数的变量,好吧,我感觉这个也很明显;你确定你访问的是外部函数的成员吗?
追问
我是问为什么name2未定义?
从结构看name2就是innerFunc 函数的外部函数成员,为什么不能访问?
追答
你外面本来就没定义变量name2,你定义的是属性name2;
this.name2 = "bbb"; 和 var name2 = "bbb";显然不是一回事,所以我才说很明显;虽然说js的内部机制是把所有的变量都当作是属性来处理的,但是变量和属性语法都不一样,你懂得
如果你要用属性,就该alert(this.name2),而不是你现在这样写的东东
行不得反诸已
2012-05-15 · 超过48用户采纳过TA的回答
知道答主
回答量:171
采纳率:0%
帮助的人:112万
展开全部
把name2写在function 的外边试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式