87,910
社区成员
发帖
与我相关
我的任务
分享
(function bb(){
var aa = 2;
(function(){
alert(aa); // 2
})();
})();
(function bb(){
var aa = 2;
Function("alert(aa)")(); // 报错,显示aa未定义
})();
(function bb(){
var aa = 2;
Function("var bb = 3;")();
})();
alert(bb); // 报错,显示bb未定义
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script type="text/javascript">
/**
LZ的问题出现在没有理解Function()的作用!
其实定义函数最原始的方法就是var fn=new Function("alert('hello world');");
其实Function是对一个对象(可以理解为一个类),用alert(fn instanceof Function)可以验证
Funcction()是Function的构造函数。
如果理解了上面的概念,来看下LZ的代码
*/
(function bb(){
var aa = 2;
(function(){
alert(aa); // 2
})();
})();
(function bb(){
var aa = 2;
//Function("alert(aa)")(); // 报错,显示aa未定义
//修改后
Function("var aa=123;alert(aa)")(); //这里调用了Function的构造函数,创建了一个函数对象
//将内部其实是:
/*
Function(){
var aa=123; LZ先前这里出现了问题,这个aa和函数里的aa没有半钱关系,如果想有关系请看我下面的代码
alert(aa);
}
*/
})();
(function cc(){
var aa=2;
Function("var aa="+aa+";alert(aa)")();
})();
</script>
<body>
</body>
</html>
//难道 Function 优先执行???????