javascript中的局部变量和全局变量的问题
请问一下执行test()的时候第二个弹框this.a中的a不是定义是5了吗?怎么弹出来还是10?求大神解答一下~...
请问一下 执行test()的时候 第二个弹框this.a 中的a不是定义是5了吗?怎么弹出来还是10?求大神解答一下~
展开
1个回答
展开全部
函数的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; }这样才是私有的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询