JS

JS中with作用疑问?

 
 如下:
 
<!DOCTYPE html>
<html>
<head>
<title>debug</title>
</head>
<body>
<script type="text/javascript">
function foo(obj){
obj.a=2;
}

var o1={
a:3
}
var o2={
b:1
}

foo(o1);
console.log(o1.a);//2

foo(o2);
console.log(o2.a);//2
console.log(a);//undefined
</script>
</body>
</html>

上面,为什么console.log(o2.a)的结果会是2?

以及如下:
 
<!DOCTYPE html>
<html>
<head>
<title>debug</title>
</head>
<body>
<script type="text/javascript">
function foo(obj){
with(obj){
a=2;
}
}

var o1={
a:3
}
var o2={
b:1
}

foo(o1);
console.log(o1.a);//2

foo(o2);
console.log(o2.a);//undefined
console.log(a);//2
</script>
</body>
</html>

为什么这个的结果中,console.log(a)会是2?
 
 
 
已邀请:

要回复问题请先登录注册