为何不支持参数嵌入文本的函数定义?附示例及报错说明
关于参数嵌入文本的函数定义问题
你写的这种函数语法不符合JavaScript规范,必然会触发语法错误。JavaScript要求函数名必须是合法标识符,不能包含括号这类特殊结构,_(param1)plus(param2)这种写法根本无法被解析器识别。
替代实现方案
如果想实现类似“参数嵌入文本”的调用体验,可以试试以下几种合规写法:
链式调用方案:
先定义基础函数,返回包含后续方法的对象:function _(param1) { return { plus: function(param2) { return param1 + param2; } }; } // 调用示例 console.log(_(1).plus(2)); // 输出3标签模板字符串方案:
利用ES6标签模板实现贴近文本嵌入的写法:function plus([_, __], param1, param2) { return param1 + param2; } // 调用示例 console.log(plus`${1}plus${2}`); // 输出3柯里化函数方案:
通过拆分多次调用实现类似逻辑:function _(param1) { return function plus(param2) { return param1 + param2; }; } // 调用示例 console.log(_(1)(2)); // 输出3
以上写法均符合JavaScript语法规范,不会触发语法错误。
内容的提问来源于stack exchange,提问作者Draco Kinerek
相关产品推荐
相关产品推荐

