<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script>
//预解析,变量声明提升
if(! 'a' in window){
var a=123;
}
alert(a);//undefined
/*说明:
* 1.变量声明提升,var a;
* 2.变量a是window对象的一个成员,if的条件为假,所以赋值语句没有执行。
* 3.最后打印的a为undefined,因为a声明了蛤没有赋值。
* /
//函数声明提升,函数虽然写在后面,但声明会提升
foo();//1
function foo () {
alert(1);
}
// if语句中的函数
if(true){
function f1 () {
console.log('true');
}
}else{
function f1 () {
console.log('false');
}
}
f1();//true
// 说明:在新版本的浏览器中,写在逻辑判断语句块中的函数会当作表达式来处理,不会当作函数声明,所以也不存在函数提升的问题。
</script>
</html>