2008-09-25

一起学JS

碰到一个JS[JavaScript]问题,很久都没想明白。不提问题,猜猜下面这个HTML的结果。

<html>
<head>
<script type="text/javascript">

(function(){
console.log("fn: " + fn);
})();

fn = null;

(function(){
console.log("fn: " + fn);
})();

function fn(){
};

(function(){
console.log("fn: " + fn);
})();

</script>
</head>
<body>
</body>
</html>
在FIREFOX[已装FIREBUG]上看,控制台输出如下:
fn: function fn() { }
fn: null
fn: null
更多测试:
<html>
<head>
<script type="text/javascript">

var befFunc = function(){
};

(function(){
console.log("befFunc: " + befFunc);
console.log("aftFunc1: " + aftFunc1);
console.log("aftFunc2: " + aftFunc2);
console.log("aftFunc3: " + aftFunc3);

aftFunc3 = null;

})();

var aftFunc1 = function(){
};
var aftFunc2 = new Function();
function aftFunc3(){
};

(function(){
console.log("aftFunc3: " + aftFunc3);
})();

var befVar = "befVar";

var displayVars = function(){
console.log("befVar: " + befVar);
console.log("aftVar: " + aftVar);
};

displayVars();
var aftVar = "aftVar";
displayVars();

</script>
</head>
<body>
</body>
</html>
输出:
befFunc: function () { }
aftFunc1: undefined
aftFunc2: undefined
aftFunc3: function aftFunc3() { }
aftFunc3: null
befVar: befVar
aftVar: undefined
befVar: befVar
aftVar: aftVar

0 评论: