function a(){
var s = 'a'
alert('这里是一个执行空间'+s)
}
function b(){
var s='b'
alert('这里是另一个执行空间'+s)
}
a()
b()
alert(s)
//也就是说在这两个空间里面的变量不会互相影响,都有自己独立的运行空间。
怎么会不符合逻辑呢?首先由ns += arr[i]得到ns的值,这里我假设得到的值是b那么eval("if(typeof(" + ns + ") == 'undefined')" + ns + " = new Object()")实际就是eval("if(typeof(a) == 'undefined')a= new Object()")经过eval编译执行后实际就是if(typeof(a) == 'undefined'){a= new Object()}