12 Mar 2022 |
Andy Warhol | In reply to Kevin 47号键盘手 sent an image 问题 : 如果变量能够提前赋值确定,为何要用闭包? | 07:37:16 |
Andy Warhol | * 提问 : 如果变量能够提前赋值确定,为何要用闭包? | 07:37:24 |
Andy Warhol | * 我想提问 : 如果变量能够提前赋值确定,为何要用闭包? | 07:37:37 |
Andy Warhol | * 我想提问 : 如果变量能够提前赋值确定(即 wei 大的改写),为何要用闭包? | 07:38:30 |
依云 | In reply to Andy Warhol 问题 : 如果变量能够提前赋值确定,为何要用闭包? 主要是限制辅助变量的作用域吧 | 07:40:04 |
依云 | In reply to Andy Warhol 怎么回事,这种返回函数的写法 让我联想起了 lazy-load 还有 单例。 和那个没关系 | 07:40:35 |
NekoHz | (js有const的话还有点理由(((提前赋值就不能改了 | 07:40:52 |
NekoHz | 然后有TDZ机制阻止提前使用( | 07:41:19 |
依云 | In reply to Kevin 47号键盘手 sent an image 好复杂。你就不能写个 call_once_and_cache 函数吗 | 07:41:19 |
Andy Warhol | In reply to 依云 和那个没关系 泛化的联想。 | 07:41:37 |
NekoHz | 这算IIFE | 07:41:54 |
NekoHz | https://en.wikipedia.org/wiki/Immediately_invoked_function_expression | 07:42:49 |
NekoHz | (或者也可以叫 Redux and reducation strategies (wu | 07:45:36 |
NekoHz | * (或者也可以叫 Redux and reducation strategies (无类型lambda演算里的一种求值策略 | 07:46:52 |
Andy Warhol | 我记得 IIFE 的写法好像有 解决 加载顺序 的目的。 | 07:46:56 |
NekoHz | https://summer-school.racket-lang.org/2017/notes/mon-mor.html#%28part._.Redex.Contexts.Reductions__.Graphs%29 | 07:48:07 |
Andy Warhol | In reply to NekoHz (或者也可以叫 Redux and reducation strategies (wu 这个是让我联系到 lazy-load 的词汇的原因。定义一段可执行的代码,需要的时候在 eval... | 07:50:20 |
NekoHz | (虽然完全不是一个东西( | 07:50:42 |
Andy Warhol | 对,不精确。 | 07:50:52 |
Andy Warhol | * 对,不精确。模糊联想。 | 07:51:03 |
Andy Warhol | * 我记得 js IIFE 的写法好像有 解决 加载顺序 的目的。 | 07:52:09 |
Coelacanthus | In reply to @telegram_313927976:nichi.co 主要是限制辅助变量的作用域吧 那应该只有在没有块级作用域的语言里才有意义吧,如果有块级作用域就很自然的限制了 | 08:04:18 |
依云 | In reply to @coelacanthus:mozilla.org 那应该只有在没有块级作用域的语言里才有意义吧,如果有块级作用域就很自然的限制了 嗯,Lua 和旧 JS 都没有呀 | 08:05:07 |
Andy Warhol | In reply to Kevin 47号键盘手 sent an image 所以,IIFE 带来两个作用: 1. 限定了变量的作用域 2. 当嵌套的函数里使用到外部的变量,定义的当下不需要关心外部的变量是否已经定义。 | 08:05:13 |
依云 | 另外大部分语言里,块不能返回值的吧 | 08:05:25 |
Kevin 47号键盘手 | 以上的图是一个工具类,是无状态的。如果用上类,我不会这样用闭包。不得不说lua那帮人真的把闭包玩坏了,代码很多都是这种又类又闭包。 | 08:14:39 |
Kevin 47号键盘手 | 用闭包就图快,用多了要考虑重构 | 08:17:41 |
Andy Warhol | In reply to Kevin 47号键盘手 以上的图是一个工具类,是无状态的。如果用上类,我不会这样用闭包。不得不说lua那帮人真的把闭包玩坏了,代码很多都是这种又类又闭包。 这个图的写法似乎改成确定性的返回变量,没有问题呀。理由如下:
1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 JQuery。这个变量返回给了 M table ,所以不存在全局变量 2. 你的闭包没有不确定的外部全局变量的加载顺序问题。 | 08:21:16 |
Andy Warhol | * 这个图的写法似乎改成确定性的返回变量,没有问题呀。理由如下:
1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 类似 JQuery 的模块。这个变量返回给了 M table ,所以不存在全局变量
2. 你的闭包没有不确定的外部全局变量的加载顺序问题。 | 08:21:43 |
Andy Warhol | * 这个图的写法似乎改成确定性的返回变量,也没有问题。理由如下:
1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 类似 JQuery 的模块。这个变量返回给了 M table ,所以不存在全局变量
2. 你的闭包没有不确定的外部全局变量的加载顺序问题。 | 08:25:50 |