Rumah > hujung hadapan web > tutorial js > js编译和执行顺序详解

js编译和执行顺序详解

小云云
Lepaskan: 2018-02-24 14:27:01
asal
1572 orang telah melayarinya

Javascript是一段一段执行的,以script标签来分割,执行每一段之前,都有一个“预编译”, 预编译干的活有两:1.声明所有var变量(初始为undefined),2.解析定义式函数语句。 

有个关于 “window作用域下,a = 1和var a = 1” 的区别的很经典:

a = 1相当于window.a = 1,是动态地为window添加一个成员; 
var a = 1是在当前作用域(也就是window)下声明一个a,这个声明是在整个作用域内都有效的。 
换句话说,其实区别就在于var a = 1比a = 1多了一个声明的行为。
Salin selepas log masuk

看看下面的例子:
1.

alert(w);
alert('ok');
w = 2;
Salin selepas log masuk

报错:w is not defined
2.

alert(w);
alert('ok');var w = 2;
Salin selepas log masuk

依次弹出undefined和ok。预编译的时候,声明了变量w;执行到alert(w)这行代码的时候,t尚未被赋值,所以弹出undefined。
3.

a();function a() {}alert('ok');
Salin selepas log masuk

弹出ok。预编译的时候,解析了定义式函数语句function a() {},顺利执行。
4.

b();var b = function() {};
alert('ok');
Salin selepas log masuk

b不是函数,执行报错。预编译的时候,声明了变量b = undefined;执行到b()时,a还等于undefined,不是函数,所以执行b()会报错。
5.

<script type="text/javascript">
    c();
    alert(&#39;first&#39;);</script><script type="text/javascript">
    alert(&#39;second&#39;);</script>
Salin selepas log masuk

弹出second。因为javascript是一段一段执行的,第一段执行到c()的时候报错,整个第一段都不会再执行,第二段正常执行。

相关推荐:

JavaScript执行顺序分析

JavaScript执行顺序的简单介绍

详解js在html中的加载执行顺序

Atas ialah kandungan terperinci js编译和执行顺序详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan