传递一个值到函数里 是选择参数传递 还是直接闭包读取?
传参形式
~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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我记得有一个函数尾调用什么的, 可以使函数的调用栈保存的变量变少, 从而提高性能
http://es6.ruanyifeng.com/#do...尾调用优化
主要是作用域的问题,第二种写法就好像你这个
username
在函数内部是全局变量,再赋值都会影响全局其他函数。而第一种传参给其他函数相当于给了别的函数一个副本,你去赋值也不会影响全局的。
主要看你编程时的需求了。
你的第一种 的
method(id)
方法 拿到任何地方穿进去一个id就可以用第二种
method()
方法 拿到别的地方用 找不到userName
而且必须定义userName
这个变量才能用 如果我本来就有个叫userName
怎么办