没有副作用是说,除了变量定义的时候给出的初始值之外,其他表达式不会改变任何变量的值/程序运行的状态。一个函数/表达式的结果仅仅体现在其输入参数和返回值上,输入的参数相同,则返回值相同。除了用函数得到这个返回值之外,函数不会再有其他任何的作用。 像 js(除了haskell之外几乎所有的语言) 这种,满满的都是副作用呀,比如赋值语句呀,dom操作呀,都是。
全局变量的污染 var a = 'a'; function(){ a = 'b'; console.log(a) //==> b }(); //污染了变量a console.log(a) //==> b
没有副作用是说,除了变量定义的时候给出的初始值之外,其他表达式不会改变任何变量的值/程序运行的状态。一个函数/表达式的结果仅仅体现在其输入参数和返回值上,输入的参数相同,则返回值相同。除了用函数得到这个返回值之外,函数不会再有其他任何的作用。
像
js
(除了haskell
之外几乎所有的语言) 这种,满满的都是副作用呀,比如赋值语句呀,dom
操作呀,都是。