老师有个问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>正则表达式</title> </head> <body> <script type="text/javascript"> function test(){ var n = 2000; function add(){ n++; console.log(n); } return {n:n,add:add} } var test1 = test(); var test2 = test(); test1.add(); test1.add(); console.log(test1.n); test2.add(); </script> </body> </html>
为什么这里打印test1.n会是2000,而不是2001
22
收起
正在回答
2回答
同学你好,test1.n是test作用域下的,但是当第一次执行完test()时,n已经被返回了,并且是2000。再往下执行test1.add()的时候,在test函数内部,程序不会从上往下再执行一遍了,即不会再return一次{n:n,add:add},所以test1.n的值保持了最初的2000。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星