javascript中的局部变量和全局变量的问题

请问一下执行test()的时候第二个弹框this.a中的a不是定义是5了吗?怎么弹出来还是10?求大神解答一下~... 请问一下 执行test()的时候 第二个弹框this.a 中的a不是定义是5了吗?怎么弹出来还是10?求大神解答一下~ 展开
 我来答
0c4d
2014-03-26 · TA获得超过103个赞
知道答主
回答量:72
采纳率:0%
帮助的人:63.7万
展开全部
函数的this取决于调用函数的模式。test()调用属于函数调用模式。这时候的this被绑定到全局变量,所以是window,所以这里的this.a都是10,而a是内部变量5.第二种调用属于构造器调用模式。构造器调用模式下,this指针指向了构造器构造的新建的那个对象上。比如var t = new test(). this指向了t,但是 function test(){}中并没有this.a属性,所以undefined。但是a是局部变量。
更多追问追答
追问
执行test():
但是this.a的上面不是有一个a=5吗?这个没用吗?这个不是将全局变量a的值设置为5吗?那按道理this.a的值应该是替换之后的值5啊?
追答
function test(){ this.a=5; }这样才是私有的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式