美文网首页
JS之执行顺序

JS之执行顺序

作者: 卖梦想的男孩 | 来源:发表于2017-04-13 16:31 被阅读33次

JS的解析过程分为两个阶段:预编译期(预处理)与执行期

  • 预编译期 JS会对本代码块中的所有var声明的变量和函数进行处理
  • 执行期 会按照代码块的顺序逐行执行

注意事项

  • 函数处理
    预编译期会对所有定义的函数做声明,所以js中的函数定义位置在执行期不分前后
  • 变量处理
    var 变量预编译期会声明为undefined
 console.log(temp) //undefined
var temp = 1;
console.log(temp) //1

let/const不会做声明,只按照正常流程执行

 console.log(temp) //Error: not defined
let / const temp = 1;
console.log(temp) //1

扩展1

var a = 1;
function f(){
    console.log('in f',a);
    a = 2;
    console.log('in f',a);
    var a = 3;  //  let /const 则会报错
    console.log('in f',a);
}
f();
console.log(a);

结果

in f undefined
in f 2
in f 3
1

扩展2

变量声明问题

var a,b;
(function (){
    console.log('in f',a,b);
    var a = b =  3;  //var a = 3,b = 3;
    console.log('in f',a,b);
})();
console.log(a,b);

结果

in f undefined undefined
in f 3 3
undefined 3

结论:

函数的中使用var声明的变量时会优先使用本代码块中声明的var变量。

附录说明:

  • 建议变量的声明采用let/const来代替更为严格,如var可以对同一个变量跨作用域访问,还可以重复声明一个变量,容易造成不必要的bug。
  • 变量的声明最好写在顶端
  • 赋值式函数因为类似声明变量,所以也要提前声明,声明式函数则不需要。

相关文章

  • JS之执行顺序

    JS的解析过程分为两个阶段:预编译期(预处理)与执行期 预编译期 JS会对本代码块中的所有var声明的变量和函数进...

  • js执行顺序

    JavaScript是一种描述型脚本语言,由浏览器进行动态的解析与执行,浏览器对于不同的方式有不同的解析顺序,详细...

  • js执行顺序

  • js代码的异步执行方式

    由于JavaScript的执行环境是单线程的,导致js代码的两种执行方式: 以js代码的先后顺序执行的顺序型 以事...

  • js 标签的属性

    浏览器执行顺序 按顺序解析执行,当遇到 、 时,浏览器开分支执行。 js执行引擎和渲染引擎不会同步执行。

  • JS预解析(变量提升)

    JS预解析(变量提升) JS的正常执行顺序是从上往下依次执行,但是JS在执行之前会读取一遍JS代码 将所有变量声明...

  • js事件轮询机制

    这段代码的执行顺序,根据执行顺序分析、JS事件轮询原理 执行逻辑 从代码执行角度来看 首先分析同步代码、在面的代码...

  • js执行顺序总结

    流程图 首先执行同步任务,异步任务会插入到异步队列中。同步任务执行完毕,查询是否有异步任务,回到主任务执行。 微任...

  • js执行顺序1

  • js 异步执行顺序

    某天中午午饭前,11:48分,钉钉突然闪动了起来。消息如下: 代码如下: 那么打印顺序是咋样的呢?我们来好好分析一...

网友评论

      本文标题:JS之执行顺序

      本文链接:https://www.haomeiwen.com/subject/xlbbattx.html