前端同学都了解什么是副作用么?

菜园前端
• 阅读 167

原文链接:https://note.noxussj.top/?source=helloworld


什么是副作用?

副作用会让一个函数变的不纯,纯函数是根据相同的输入返回相同的输出,如果函数依赖于外部的状态就无法保证输出相同,就会带来副作用。

副作用来源

函数依赖外部状态(变量),但是副作用不可能完全禁止,尽可能控制在它们可控范围内发生。

缺点

  • 副作用使得方法通用性下降不适合扩展和可重用性
  • 副作用给程序中带来安全隐患和不稳定性

基础案例

没有副作用的函数,纯函数

function checkAge(age) {
    const xiaoming = 18
    return age >= xiaoming
}

存在副作用的函数,不纯的函数

const xiaoming = 18

function checkAge(age) {
    return age >= xiaoming
}
点赞
收藏
评论区
推荐文章
亚瑟 亚瑟
3年前
使用 Effect Hook – React
使用EffectHook_Hook_是React16.8的新增特性。它可以让你在不编写class的情况下使用state以及其他的React特性。_EffectHook_可以让你在函数组件中执行副作用操作importReact,{useState,useEffect}from'reac
Stella981 Stella981
2年前
React之浅拷贝与深拷贝
 最近发现的一个bug让我从react框架角度重新复习了一遍浅拷贝与深拷贝。浅拷贝,就是两个变量都是指向一个地址,改变了一个变量,那另一个变量也随之改变。这就是浅拷贝带来的副作用,两个变量会相互影响到,因为它们指向同一个地址。深拷贝,就是互相独立,指向的是不同的地址,一个变量改变了,另一个变量不会被影响到。react角度:父组件传给
Wesley13 Wesley13
2年前
HTTP 的幂等性
本文主要以HTTPGET、DELETE、PUT、POST四种方法为主进行语义和幂等性的介绍。一、HTTP的幂等性HTTPGET方法用于获取资源,不应有副作用,所以是幂等的。比如:GEThttp://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,
Stella981 Stella981
2年前
Python Requests库介绍
Requests唯一的一个非转基因的PythonHTTP库,人类可以安全享用。警告:非专业使用其他HTTP库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。1环境准备:新建Python3.x虚拟环境mkvirtualenvPy3_
Wesley13 Wesley13
2年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Stella981 Stella981
2年前
JavaScript的语法
语句和表达式语句相当于句子,表达式相当于短语,运算符则相当于标点符号和连接词。语句的结果值代码块的结果值就如同一个隐式的返回,即返回最后一个语句的结果值。表达式的副作用最常见的有副作用(也可能没有)的表达式是函数调用:functionfoo(){aa1;}var
Wesley13 Wesley13
2年前
初探 Objective
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言异常处理是许多高级语言都具有的特性,它可以直接中断当前函数并将控制权转交给能够处理异常的函数。不同语言在异常处理的实现上各不相同,本文主要来分析一下ObjectiveC和C这两个语言。为什么要把ObjectiveC和
Wesley13 Wesley13
2年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
菜园前端 菜园前端
12个月前
什么是纯函数?
原文链接:什么是纯函数?相同的输入永远会得到相同的输出,而且没有任何可观察的副作用。纯函数就类似数学中的函数(用来描述输入和输出之间的关系)yfn(x)纯函数库我们平时用的lodash其实就是纯函数库。纯函数的优点1.可缓存(直接提升性能)也就是我们平常说
京东云开发者 京东云开发者
6个月前
基于Effect的组件设计 | 京东云技术团队
Effect的概念起源从输入输出的角度理解Effect编程中的Effect起源于函数式编程中纯函数的概念纯函数是指在相同的输入下,总是产生相同的输出,并且没有任何副作用(sideeffect)的函数。副作用是指函数执行过程中对函数外部环境进行的可观察的改变