1、代码块
- 指的的是有<script>标签分割的代码段。
例如:
<script type="text/javascript">
alert("这是代码块一");
</script>
<script type="text/javascript">
alert("这是代码块二");
</script>
- 代码块之间相互独立,变量和方法共享,其中一个代码块出现问题不影响另一个代码的运行。
2、声明式函数与赋值式函数
<script type="text/javascript">
function Fn(){ //声明式函数
}
var Fn = function(){ //赋值式函数
}
</script>
![\color{#FF00FF}{在JS的预编译期,声明式函数会先被提取出来,然后才按照顺序执行js代码。}](https://math.jianshu.com/math?formula=%5Ccolor%7B%23FF00FF%7D%7B%E5%9C%A8JS%E7%9A%84%E9%A2%84%E7%BC%96%E8%AF%91%E6%9C%9F%EF%BC%8C%E5%A3%B0%E6%98%8E%E5%BC%8F%E5%87%BD%E6%95%B0%E4%BC%9A%E5%85%88%E8%A2%AB%E6%8F%90%E5%8F%96%E5%87%BA%E6%9D%A5%EF%BC%8C%E7%84%B6%E5%90%8E%E6%89%8D%E6%8C%89%E7%85%A7%E9%A1%BA%E5%BA%8F%E6%89%A7%E8%A1%8Cjs%E4%BB%A3%E7%A0%81%E3%80%82%7D)
3、预编译期与执行期
- 预编译期js会对所有声明比那里和函数(仅限声明式函数)进行处理,变量只是声明不会进行初始化以及赋值操作。
- 同名函数后者会覆盖前者。
<script type="text/javascript">
Fn(); //执行结果:"执行了声明式函数",在预编译期声明函数及被处理了,所以即使Fn()调用函数放在声明函数前也能执行。
function Fn(){ //声明式函数
alert("执行了声明式函数");
}
var Fn = function(){ //赋值式函数
alert("执行了赋值式函数");
}
</script>