老师有个问题
<!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 星