前端孵化日记(五)JS解析与执行

188 阅读1分钟

代码块

JS是以代码块为单位执行的。

特点:

  1. 独立性:一个代码块发生错误,不影响其他代码块的执行。
  2. 共享:上一个代码块定义的变量和函数,后面的代码块都可以使用

预编译

1. 最简单的例子

        console.log(a);     //undefined
        var a = 1;
        console.log(a);     //1

undefined出现情况一般有两种:

    1. 没有明确指定return
    1. 变量没有明确初值

2. js代码执行过程

    1. 预编译(扫描整个代码段,检查是否错误;若无误进行提升操作)
    1. 执行

3. 变量提升

  1. var变量可以提升,没有var的变量是不会提升的
  2. 循环变量也可以提升
  3. 函数内部加var的变量也会提升,提升到了函数内部的最前面

4. 函数提升

  1. 函数声明也会提升,提升到代码块的最前面
  2. 函数表达式不会提升,原因函数表达式本质是一个变量