当前位置:网站首页>JS pure function
JS pure function
2022-07-06 08:29:00 【Wind billows】
Pure function
1. This function when the same input value , Always produce the same output . The output of the function is independent of the context state of the current running environment .
Pure functions are like functions in Mathematics , Function maps input parameters to return values , in other words , For each set of inputs , There is an output .
function test(a){
console.log(a*a);
}
test(10);
test(10);
test(10);
test(10);
2. The running process of this function does not affect the running environment , That is, no side effects ( Such as trigger event 、 launch http request 、 Print /log etc. ).
A function execution process produces externally observable changes to , Then say , This function has side effects . and Pure functions do not produce any observable side effects , That is, it cannot change any external state .
var num = 18;
function compare(x){
return x > num;
}
console.log(compare(20))
// Not a pure function
// Revise it
var num = 18;
function compare(x){
return x > 18;
}
console.log(compare(20))
// Pass two parameters
var num = 18;
function compare(x,num){
return x > num;
}
console.log(compare(20,num))
// Not using external num But within its scope num
3. If it's a reference type ?
var arr = [];
function add(_arr){
var obj = {
name:'cts'};
_arr.push(obj);
return _arr;
}
add(arr);
console.log(arr);
// Not a pure function Reference type
// Revise it
var arr = [{
name:'bailibn'}];
function add(_arr){
var obj = {
name:'cts'};
// Create a new arr
var newArr = [];
// take arr Clone the contents of
for(var i = 0;i<_arr.length;i++){
// Clone by cloning
newArr[i] = _arr[i];
}
newArr.push(obj);
return newArr;
}
console.log(add(arr))
// To simplify the
function add(x,y){
return x+y;
}
var num1 = 1;
var num2 = 2;
add(num1,num2);// Pure function
var GArr = [];
function add(arr){
arr.push(1);
return arr;
}
add(gArr);// Not a pure function
// A lot of bullshit , What's the use of pure functions ?
Simply speaking , That is, when the output of a function is not affected by the external environment , At the same time, it does not affect the external environment , This function is a pure function , That is, it only focuses on logical operations and mathematical operations , The same input always gets the same output .
javascript Built in functions have many pure functions , There are also many non pure functions .
Pure function :
Array.prototype.slice
Array.prototype.map
String.prototype.toUpperCase
Meromorphic function :
Math.random
Date.now
Array.ptototype.splice
Pure function action
JavaScript It is easy to create global variables in , These variables can be accessed in all functions . This is also a cause bug Common causes of , Because any part of the program may modify global variables, resulting in abnormal bold style of function behavior Pure functions are very easy to unit test , Because you don't need to think about context , Just consider the inputs and outputs边栏推荐
- Online yaml to CSV tool
- Summary of MySQL index failure scenarios
- 3. File operation 3-with
- C语言自定义类型:结构体
- MFC sends left click, double click, and right click messages to list controls
- Deep learning: derivation of shallow neural networks and deep neural networks
- Use br to back up tidb cluster data to S3 compatible storage
- MySQL learning record 10getting started with JDBC
- Chinese Remainder Theorem (Sun Tzu theorem) principle and template code
- Leetcode question brushing (5.31) string
猜你喜欢
704 二分查找
Online yaml to CSV tool
2022.02.13 - NC003. Design LRU cache structure
C language custom type: struct
【MySQL】锁
All the ArrayList knowledge you want to know is here
The resources of underground pipe holes are tight, and the air blowing micro cable is not fragrant?
Use Alibaba icon in uniapp
Ruffian Heng embedded bimonthly, issue 49
Yyds dry goods inventory three JS source code interpretation eventdispatcher
随机推荐
2022.02.13 - NC004. Print number of loops
[MySQL] log
Synchronized solves problems caused by sharing
Mobile Test Engineer occupation yyds dry goods inventory
【MySQL】数据库的存储过程与存储函数通关教程(完整版)
Summary of MySQL index failure scenarios
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Erc20 token agreement
1. Color inversion, logarithmic transformation, gamma transformation source code - miniopencv from zero
[research materials] 2022 China yuancosmos white paper - Download attached
Is it safe to open an account in Zheshang futures?
从 CSV 文件迁移数据到 TiDB
Grayscale upgrade tidb operator
Hill sort c language
指针和数组笔试题解析
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
【MySQL】鎖
Upgrade tidb with tiup
使用 BR 备份 TiDB 集群数据到兼容 S3 的存储
[cloud native] teach you how to build ferry open source work order system