js编译和执行顺序详解
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多了一个声明的行为。
看看下面的例子:
1.
alert(w); alert('ok'); w = 2;
报错:w is not defined
2.
alert(w); alert('ok');var w = 2;
依次弹出undefined和ok。预编译的时候,声明了变量w;执行到alert(w)这行代码的时候,t尚未被赋值,所以弹出undefined。
3.
a();function a() {}alert('ok');
弹出ok。预编译的时候,解析了定义式函数语句function a() {},顺利执行。
4.
b();var b = function() {}; alert('ok');
b不是函数,执行报错。预编译的时候,声明了变量b = undefined;执行到b()时,a还等于undefined,不是函数,所以执行b()会报错。
5.
<script type="text/javascript"> c(); alert('first');</script><script type="text/javascript"> alert('second');</script>
弹出second。因为javascript是一段一段执行的,第一段执行到c()的时候报错,整个第一段都不会再执行,第二段正常执行。
相关推荐:
以上是js编译和执行顺序详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Windows操作系统是全球最流行的操作系统之一,其新版本Win11备受瞩目。在Win11系统中,管理员权限的获取是一个重要的操作,管理员权限可以让用户对系统进行更多的操作和设置。本文将详细介绍在Win11系统中如何获取管理员权限,以及如何有效地管理权限。在Win11系统中,管理员权限分为本地管理员和域管理员两种。本地管理员是指具有对本地计算机的完全管理权限

OracleSQL中的除法运算详解在OracleSQL中,除法运算是一种常见且重要的数学运算操作,用于计算两个数相除的结果。除法在数据库查询中经常用到,因此了解OracleSQL中的除法运算及其用法是数据库开发人员必备的技能之一。本文将详细讨论OracleSQL中除法运算的相关知识,并提供具体的代码示例供读者参考。一、OracleSQL中的除法运算

PHP中的模运算符(%)是用来获取两个数值相除的余数的。在本文中,我们将详细讨论模运算符的作用及用法,并提供具体的代码示例来帮助读者更好地理解。1.模运算符的作用在数学中,当我们将一个整数除以另一个整数时,会得到一个商和一个余数。例如,当我们将10除以3时,商为3,余数为1。模运算符就是用来获取这个余数的。2.模运算符的用法在PHP中,使用%符号来表示模

Linux系统调用system()函数详解系统调用是Linux操作系统中非常重要的一部分,它提供了一种与系统内核进行交互的方式。其中,system()函数是一个常用的系统调用函数之一。本文将详细介绍system()函数的使用方法,并提供相应的代码示例。系统调用的基本概念系统调用是用户程序与操作系统内核交互的一种方式。用户程序通过调用系统调用函数来请求操作系统

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

Linux的curl命令详解摘要:curl是一种强大的命令行工具,用于与服务器进行数据通信。本文将介绍curl命令的基本用法,并提供实际的代码示例,帮助读者更好地理解和应用该命令。一、curl是什么?curl是一个命令行工具,用于发送和接收各种网络请求。它支持多种协议,如HTTP、FTP、TELNET等,并提供了丰富的功能,如文件上传、文件下载、数据传输、代

Numpy是一款Python科学计算库,提供了丰富的数组操作函数和工具。升级Numpy版本时需要查询当前版本以保证兼容性,本文将详细介绍Numpy版本查询的方法,并提供具体的代码示例。方法一:使用Python代码查询Numpy版本使用Python代码可以轻松查询Numpy的版本,以下是实现方法和示例代码:importnumpyasnpprint(np

Promise.resolve()详解,需要具体代码示例Promise是JavaScript中一种用于处理异步操作的机制。在实际开发中,经常需要处理一些需要按顺序执行的异步任务,而Promise.resolve()方法就是用来返回一个已经Fulfilled状态的Promise对象。Promise.resolve()是Promise类的一个静态方法,它接受一个
