首页 > 其他分享 >JS函数的副作用你了解过吗?

JS函数的副作用你了解过吗?

时间:2023-04-10 19:32:11浏览次数:47  
标签:xiaoming noxussj const 函数 age JS 副作用

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

什么是副作用?

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

副作用来源

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

缺点

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

基础案例

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

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

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

const xiaoming = 18

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

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



标签:xiaoming,noxussj,const,函数,age,JS,副作用
From: https://blog.51cto.com/u_12639291/6181367

相关文章

  • 【享元设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介享元模式(FlyweightPattern),是一种结构型设计模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。当程序需要生成数量巨大的相似对象时,可能对内存有......
  • js优化(防抖和节流)
    ......
  • d3.js制作蜂巢图表带动画效果
     以上是效果图,本图表使用d3.jsv4制作。图表主要功能是在六边形格子中显示数据,点击底部图标可以切换指定格子高亮显示,图表可以随浏览器任意缩放。 1.图表的主体结构是由正六边形组成,使用d3生成六边形可以使用d3-hexbin.js,生成六边形比较方便,只要给定中心点坐标和半径即可生......
  • C++ 性能优化 - for循环条件中不要调用函数
    for循环条件中调用普通函数#include<iostream>#include<chrono>usingnamespacestd;longlongcount=0;constintN=10;intgetSize(){cout<<"getsize"<<endl;returnN+1;}voidtimeMeasure(void(*f)()){autobeg......
  • 记录-html-docs-js避坑指南
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言我们公司目前在做基于tiptap的在线协同文档,最近需要做导出pdf、word需求。导出word文档使用的是html-docx-js-typescript,是用typescript重写了一下html-docx-js,可以看到最近的提交记录是2016年,貌似已......
  • JSON.parse意外失败的问题(传入内容在校验网站上检查无误)(传入内容来自CryptoJS.AES.dec
    背景:由CryptoJS.AES.decrypt解码来的数据并进行toString(CryptoJS.enc.Utf8)之后,无法使用JSON.parse转换成json数据,但是使用在线校验工具认为格式正确。可能是由于解码后的字符串包含了一些特殊字符或者不可见字符,导致JSON.parse方法无法正确解析字符串。可以尝试使用console.log......
  • js删除cookie失败
    如果js删除cookie失败,请检查以下要点:cookie不为httpOnly删除cookie字段要设置全,字段要保持一致,比如:document.cookie='token=xxxx;path=/;domain=.baidu.com;max-age=-1'如果cookie的domain为当前域名,不需要声明domain字段,比如是news.baidu.com而不是.news.baidu.comd......
  • json-server 笔记
    在vs-code的终端下运行出错:PSE:\newsvn\vue3学习\vite-blog>json-server--watchdb.jsonjson-server:无法加载文件C:\Users\Administrator\AppData\Roaming\npm\json-server.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=......
  • rxjs的几点使用心得
    1.对错误的处理日常使用中,点击按钮需要往后台发消息,为了不重复发消息,经常需要把点击事件做成subject,然后把发消息的过程做成switchMap,类似下面的写法  constsubject=newrxjs.Subject();  subject.pipe(   rxjs.operators.switchMap(index=>{   ......
  • js:模板解析实现2 -- 支持子列表
    难度是对于子循环列表的解析,比第一个实现有更好的解析效果和应用-----解析代码---/**调用形式tags.call({sid:'含解析html父级id',endFunc:解析结束执行Func},{listsObj});*能够使用注释的位置可以使用注释格式,不能使用时可以使用@.---photo--@来代替<!---photo-->......