Home >Web Front-end >JS Tutorial >Analysis of side effects of js functions_javascript skills

Analysis of side effects of js functions_javascript skills

WBOY
WBOYOriginal
2016-05-16 18:03:14985browse

Function side effects will bring unnecessary trouble to program design, bring errors that are difficult to find, and reduce the readability of the program. Strict functional languages ​​require functions to have no side effects.
Several concepts related to the side effects of functions, Pure Function, Impure Function, Referential Transparent.
Pure Function (Pure Function)
The input and output data flows are all explicit. Explicit means that there is only one way for a function to exchange data with the outside world - parameters and return values. All input information a function accepts from outside the function is passed inside the function through parameters. All information that a function outputs outside the function is passed outside the function through the return value.
Impure Function (Impure Function)
The opposite. Implicit means that the function exchanges data with the outside world through channels other than parameters and return values. For example, reading/modifying global variables is called implicit data exchange with the outside world.
Referential Transparent (Referential Transparent)
The concept of referential transparency is related to and affected by the side effects of functions. If two expressions of the same value in a program can be replaced with each other anywhere in the program without affecting the action of the program, then the program has referential transparency. It has the advantage that the semantics of non-reference-transparent languages ​​are easier to understand and less obscure. Pure functional languages ​​have no variables, so they are referentially transparent.
The following example illustrates the combination of referential transparency and function side effects

Copy code The code is as follows:

result1 = (fun(a) b) / (fun(a) -c);
temp = fun(a);
result2 = (temp b) / (temp -c);

If the function has no side effects, then result1 and result2 will be equivalent. However, if fun has side effects, such as adding 1 to b or c, then result1 and result2 will not be equal. Therefore, side effects violate referential transparency.
In JavaScript, functions are introduced. But obviously functions in JS can access and modify global variables (or variables defined outside the function), as follows
Copy code Code As follows:

var a = 5;
function fun(){
a = 10;
}
fun(); // a becomes 10

To ensure that functions have no side effects in JS, we can only rely on programmers’ habits, that is,
1. The function entry uses parameter operation without modifying it.
2. Function Variables outside the function are not modified internally, such as global variables
3, and the operation results are returned to the outside (exit) through the function.
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn