能否在函数定义时使用/*#__PURE__*/注解标记为纯函数?
关于在函数定义时使用
/*#__PURE__*/注解的问题 可以在函数定义时使用/*#__PURE__*/注解,你的示例写法是有效的,不过需要明确它的作用和正确使用场景:
1. 正确的语法形式
你给出的箭头函数写法完全合法,普通函数表达式也可以用同样的方式标记:
// 箭头函数表达式 var max = /*#__PURE__*/(a,b) => { return a > b ? a : b; } // 普通函数表达式 var calculateSum = /*#__PURE__*/function(num1, num2) { return num1 + num2; };
注解需要紧贴函数表达式开头(允许有空格,但通常习惯无空格紧贴),确保Webpack能正确识别。
2. 注解的作用差异
要区分函数定义时标记和函数调用时标记的核心区别:
- 函数调用前加
/*#__PURE__*/:告知Webpack调用该函数的操作无副作用(比如不会修改全局变量、触发DOM操作等),方便tree-shaking移除未使用的调用结果。 - 函数定义前加
/*#__PURE__*/:告知Webpack创建该函数实例的过程无副作用——即定义函数本身不会产生任何外部影响。如果后续该函数变量从未被使用,Webpack可直接移除整个函数定义。
3. 注意事项
- 该注解仅对函数表达式生效,对函数声明(
function max() {})无效,因为函数声明会被JS引擎提升,Webpack的tree-shaking逻辑无法直接处理这类声明的标记。 - 仅当函数创建过程完全无副作用时才添加注解——如果函数定义隐含副作用(比如在函数体内直接修改全局变量、执行异步操作等),添加注解会误导Webpack,导致错误的代码移除。
内容的提问来源于stack exchange,提问作者Alphonsio
相关产品推荐
相关产品推荐

