What is precompilation in javascript
In JavaScript, pre-compilation is an operation performed before the code is executed. It will advance variable declarations and function declarations in advance, and put these into the created objects according to certain rules. .
The operating environment of this tutorial: Windows 10 system, JavaScript version 1.8.5, Dell G3 computer.
What is precompilation in javascript
js running trilogy
1. Syntax analysis: Before the js engine parses the js code, it will scan the entire text to find Make low-level syntax errors, such as incorrectly written braces and the like.
2. Pre-compilation. Any syntax and statements will be converted into objects, GO (Global Object), AO (Active Object). The code is placed in GO and AO according to certain rules.
3. Interpretation and execution: Compile and execute one line at a time. When there is no problem with syntax analysis and the pre-compilation stage has been completed, start interpreting and executing the code.
What kind of pre-compilation?
Pre-compilation is an operation performed before JavaScript code to advance variable declarations and function declarations. These codes are placed in the created objects according to certain rules.
Pre-compilation process:
GO window pre-compilation
1, create a GO object the moment the script tag is executed
2, look for variables Declaration, the variable name is used as the attribute name of the GO object, and the value is undefined.
3, look for the function declaration, the function name is used as the attribute name of the GO object, and the value is the function body. If the function name is the same as the variable name, directly override
AO function precompilation
1, create an AO object at the moment the function is executed
2, look for the actual parameters and formal parameters, add the formal parameters to the object as the attribute name of the AO object, and the value is the actual parameter. It is worth noting Yes, function declarations are not called variables. If there is no actual parameter value, it is undefined.
3, look for the variable declaration, the variable name is used as the attribute name of the AO object, and the value is undefined. If the variable name and formal parameter name are the same, don't worry.
4, look for the function declaration, the function name is used as the attribute name of the AO object, and the value is the function body. If the function name is the same as the variable name, overwrite it directly.
Let’s write a piece of code to briefly introduce it. The process of Yiha function precompilation
function fun(a,b){ console.log(a); var a = 10; console.log(a); function a(){} console.log(a) a = 1; var b; console.log(b); var b = function(){} console.log(b); } fun(1,2);
1 First, an AO object will be created before executing fun.
funAO{ }
2, look for the actual parameters and formal parameters, add the formal parameters to the object as the attribute name of the AO object, and the value is the actual parameter. It is worth noting that the function declaration is not called a variable. If there is no actual parameter value, it is undefined.
funAO{ a : 1, b : 2 }
3, look for the variable declaration, the variable name is used as the attribute name of the AO object, and the value is undefined. If the variable name is the same as the formal parameter name, don't worry
funAO{ a : 1, b : 2 }
4. Look for the function declaration. The function name is used as the attribute name of the AO object, and the value is the function body. If the function name is the same as the variable name, overwrite it directly
funAO{ a : function a(){}, b : 2 }
Explanation and execution
function fun(a,b){ console.log(a); //往上面的AO对象里面寻找,a的值是function a(){}。 这里就输出function a(){} var a = 10; console.log(a);//上面一行代码把a赋值10 ,所以这里输出10 function a(){} console.log(a)//这里也是10,因为上面函数已经提前了 a = 1; var b; console.log(b);//往上面的AO对象里面寻找,b的值是2。 这里就输出2 var b = function(){}//这里的函数为啥不能提前,因为这里的是一个函数表达式,这个函数没有函数名所以不能提前。 console.log(b);//这里把b赋值function(){},所以这里输出function(){} } fun(1,2);
There is another possibility
function add(){ //这里的话碰到if判断,for....除了function作用域之外的咱们都得正常分析, //所以这里的值为undefined其实就是var a提前了赋值undefined console.log(a);//这里的输出结果为?undefined if(a){ var a = 10; } //这里是把a的值传入判断里面undefined返回的是false所以进不去,值就不会改变这里还是undefined console.log(a);//undefined } add();
This is the precompiled execution process!
Related recommendations: javascript learning tutorial
The above is the detailed content of What is precompilation in javascript. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to use WebSocket and JavaScript to implement an online speech recognition system Introduction: With the continuous development of technology, speech recognition technology has become an important part of the field of artificial intelligence. The online speech recognition system based on WebSocket and JavaScript has the characteristics of low latency, real-time and cross-platform, and has become a widely used solution. This article will introduce how to use WebSocket and JavaScript to implement an online speech recognition system.

WebSocket and JavaScript: Key technologies for realizing real-time monitoring systems Introduction: With the rapid development of Internet technology, real-time monitoring systems have been widely used in various fields. One of the key technologies to achieve real-time monitoring is the combination of WebSocket and JavaScript. This article will introduce the application of WebSocket and JavaScript in real-time monitoring systems, give code examples, and explain their implementation principles in detail. 1. WebSocket technology

Introduction to how to use JavaScript and WebSocket to implement a real-time online ordering system: With the popularity of the Internet and the advancement of technology, more and more restaurants have begun to provide online ordering services. In order to implement a real-time online ordering system, we can use JavaScript and WebSocket technology. WebSocket is a full-duplex communication protocol based on the TCP protocol, which can realize real-time two-way communication between the client and the server. In the real-time online ordering system, when the user selects dishes and places an order

How to use WebSocket and JavaScript to implement an online reservation system. In today's digital era, more and more businesses and services need to provide online reservation functions. It is crucial to implement an efficient and real-time online reservation system. This article will introduce how to use WebSocket and JavaScript to implement an online reservation system, and provide specific code examples. 1. What is WebSocket? WebSocket is a full-duplex method on a single TCP connection.

JavaScript and WebSocket: Building an efficient real-time weather forecast system Introduction: Today, the accuracy of weather forecasts is of great significance to daily life and decision-making. As technology develops, we can provide more accurate and reliable weather forecasts by obtaining weather data in real time. In this article, we will learn how to use JavaScript and WebSocket technology to build an efficient real-time weather forecast system. This article will demonstrate the implementation process through specific code examples. We

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

Usage: In JavaScript, the insertBefore() method is used to insert a new node in the DOM tree. This method requires two parameters: the new node to be inserted and the reference node (that is, the node where the new node will be inserted).

JavaScript is a programming language widely used in web development, while WebSocket is a network protocol used for real-time communication. Combining the powerful functions of the two, we can create an efficient real-time image processing system. This article will introduce how to implement this system using JavaScript and WebSocket, and provide specific code examples. First, we need to clarify the requirements and goals of the real-time image processing system. Suppose we have a camera device that can collect real-time image data
