当前位置:网站首页>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边栏推荐
- [luatos-air551g] 6.2 repair: restart caused by line drawing
- Beijing invitation media
- Colorlog combined with logging to print colored logs
- Migrate data from a tidb cluster to another tidb cluster
- LDAP應用篇(4)Jenkins接入
- Analysis of Top1 accuracy and top5 accuracy examples
- 【Nvidia开发板】常见问题集 (不定时更新)
- ROS编译 调用第三方动态库(xxx.so)
- [MySQL] lock
- synchronized 解决共享带来的问题
猜你喜欢

堆排序详解

C language custom type: struct

面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读

Analysis of pointer and array written test questions

Pyqt5 development tips - obtain Manhattan distance between coordinates

【MySQL】锁
![[cloud native topic -45]:kubesphere cloud Governance - Introduction and overall architecture of enterprise container platform based on kubernetes](/img/ac/773ce8ee7f380df19edf8373250608.jpg)
[cloud native topic -45]:kubesphere cloud Governance - Introduction and overall architecture of enterprise container platform based on kubernetes

【ROS】usb_cam相机标定

Cisp-pte practice explanation

On the day of resignation, jd.com deleted the database and ran away, and the programmer was sentenced
随机推荐
Introduction to number theory (greatest common divisor, prime sieve, inverse element)
Research Report on supply and demand and development prospects of China's high purity aluminum market (2022 Edition)
All the ArrayList knowledge you want to know is here
CISP-PTE实操练习讲解
Tidb backup and recovery introduction
Restore backup data on S3 compatible storage with br
Modify the video name from the name mapping relationship in the table
Pointer advanced --- pointer array, array pointer
2022.02.13 - 238. Maximum number of "balloons"
synchronized 解决共享带来的问题
使用 BR 恢复 S3 兼容存储上的备份数据
704 二分查找
Convolution, pooling, activation function, initialization, normalization, regularization, learning rate - Summary of deep learning foundation
China Light conveyor belt in-depth research and investment strategy report (2022 Edition)
C语言 - 位段
What is the use of entering the critical point? How to realize STM32 single chip microcomputer?
Make learning pointer easier (3)
Grayscale upgrade tidb operator
2022.02.13 - NC003. Design LRU cache structure
图像融合--挑战、机遇与对策