代码的执行顺序
- 普通函数的声明语句与函数的调用语句没有先后顺序之分
- 匿名函数表达式的调用语句必须在函数声明语句之后,否则报错
JavaScript 代码执行的两个阶段
1.检查装载阶段:主要的工作是函数的声明、变量的声明等
2.代码执行阶段:主要的工作是函数的调用、变量的赋值、代码的执行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 代码的执行阶段</title>
</head>
<body>
</body>
<script type="text/javascript">
/*
console.log() 是函数的调用,属于代码执行阶段
此时 num 并没有赋值,仅仅是在检查装载阶段声明了变量 num,因此 num 为 undefined
*/
console.log(num);
/*
var num 是变量声明,在检查装载阶段
num = 10 是变量赋值,在代码执行阶段
*/
var num = 10;
/*
函数可以正常执行,函数的调用属于代码执行阶段
而函数名已经在检查装载阶段声明完成
*/
func1();
function func1(){
console.log('调用函数 func1() 成功');
}
/*
func2() 不能执行,打印时显示 undefined
匿名函数表达式的调用必须在函数声明语句之后,否则报错
*/
func2();
var func2 = function(){
console.log('调用函数 func2() 成功');
}
</script>
</html>
效果图
一:检查装载阶段
- 检查装载阶段主要执行变量的声明和函数的声明
二:代码执行阶段
- 代码执行阶段只要执行变量的赋值、函数调用等语句