副作用
在JavaScript中,副作用(Side Effect)是指函数或表达式执行时对函数外部环境产生的影响或变化。这些影响可以是对函数外部状态的修改、与外部环境的交互、对全局变量的读写等。
常见的副作用包括但不限于以下情况:
修改函数外部的状态:函数修改外部定义的变量、对象或数据结构的值。
更改传入参数:函数修改传递给它的参数的值。
执行 I/O 操作:函数进行文件读写、网络请求、数据库操作等涉及输入输出的操作。
抛出异常:函数抛出异常并改变程序流程。
控制台输出:函数向控制台输出信息。
修改全局变量:函数修改或读取全局作用域下的变量。
副作用的存在使得代码的行为不再仅仅依赖于函数的输入,而受到外部环境的影响。这导致代码的可预测性降低,使得调试和维护变得更加困难。在函数式编程中,减少副作用的使用被认为是一种良好的实践,有助于提高代码的可读性、可测试性和可组合性。
纯函数的概念也正是基于避免副作用的思想,纯函数不会产生任何副作用,只通过输入参数计算并返回结果,从而保持了代码的可预测性和可维护性。
数据劫持
数据劫持(Data Hijacking)是一种在程序中对数据进行拦截、监视或修改的技术。通过数据劫持,可以对数据进行监听、过滤、转换或执行其他自定义逻辑,以实现对数据的控制和扩展。
数据劫持的作用如下:
监听数据变化:通过数据劫持,可以在数据发生变化时触发相应的回调函数,实现数据的实时监听和响应。
数据验证和转换:可以在数据被赋值之前进行验证和转换,确保数据的合法性和一致性。
计算属性:数据劫持可以创建一些虚拟的属性,这些属性的值依赖于其他属性的计算结果,可以通过数据劫持自动进行更新。
响应式编程:数据劫持可以使得数据和界面之间建立起关联,当数据变化时,相应的界面也随之更新,实现了数据驱动视图的效果。
实现数据劫持的方式有多种,其中常见的一种方法是使用对象劫持。具体步骤如下:
创建一个指定的对象。
使用Object.defineProperty()方法对对象的属性进行劫持。通过设置get和set方法来拦 [Something went wrong, please try again later.]