<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js-函数提升</title>
</head>
<body>
<script>
window.onload = function() {
var a = 2;
/* function show() {
alert("奇数");
};
function show() {
alert("偶数");
}; */ // 函数提升:是整个函数的提升
/***不正常弹出**/
if(a % 2 == 1) {
function show() {
alert("奇数");
};
} else {
function show() {
alert("偶数");
};
}
show(); // 总会弹出"偶数",跟 a 的值无关
/***正常弹出**/
if(a % 2 == 1) {
var show2 = function() {
alert("奇数");
};
} else {
var show2 = function() {
alert("偶数");
};
}
show2(); // 正常弹出奇偶数,此种写法是变量声明的提升
};
</script>
<p>
理解两点:
1. 变量的提升,只提升变量的声明,赋值留在原地
2. 函数的提升,是整个函数声明的提升
</p>
</body>
</html>