传递一个值到函数里 是选择参数传递 还是直接闭包读取?

发布于 2022-09-05 14:48:45 字数 847 浏览 15 评论 0

传参形式

~funciton (userName) {
    method(userName);
    
    method0(userName);
    
    
    function method(id) {
        alert(id);
    }
    
    function method0(id) {
        // method0 本身并不需要 id 但 method1 需要 接收也是为了调用 method1 时传递过去
        method1(id);
    }
    
    function method1(id) {
        console.log(id);
    }
}('*#02#')

闭包形式

~funciton (userName) {
    method();
    
    method0();
    
    
    function method() {
        alert(userName);
    }
    
    function method0() {
        // method0 本身并不需要 id 但 method1 需要 接收也是为了调用 method1 时传递过去
        method1();
    }
    
    function method1() {
        console.log(userName);
    }
}('*#02#')

显然闭包简直好用爆了 不过我记得函数式编程的规范是建议函数用到的外部值都需要传参进去 这才能形成纯函数 是吧 这样到底有什么好处 辣么用真的不嫌麻烦吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抹茶夏天i‖ 2022-09-12 14:48:45

我记得有一个函数尾调用什么的, 可以使函数的调用栈保存的变量变少, 从而提高性能

http://es6.ruanyifeng.com/#do...尾调用优化

流绪微梦 2022-09-12 14:48:45

主要是作用域的问题,第二种写法就好像你这个username在函数内部是全局变量,再赋值都会影响全局其他函数。
而第一种传参给其他函数相当于给了别的函数一个副本,你去赋值也不会影响全局的。
主要看你编程时的需求了。

等往事风中吹 2022-09-12 14:48:45

你的第一种 的 method(id) 方法 拿到任何地方穿进去一个id就可以用
第二种 method()方法 拿到别的地方用 找不到userName 而且必须定义userName这个变量才能用 如果我本来就有个叫userName怎么办

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文