!2KhbxzkrlqGS6zMD:nichi.co

Vim 中文用户群

1336 Members
本群桥接 Telegram 群组 https://t.me/vimzh_real 。37 Servers

Load older messages


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

1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 JQuery。这个变量返回给了 M table ,所以不存在全局变量
2. 你的闭包没有不确定的外部全局变量的加载顺序问题。
08:21:16
@telegram_847761246:nichi.coAndy Warhol* 这个图的写法似乎改成确定性的返回变量,没有问题呀。理由如下: 1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 类似 JQuery 的模块。这个变量返回给了 M table ,所以不存在全局变量 2. 你的闭包没有不确定的外部全局变量的加载顺序问题。08:21:43
@telegram_847761246:nichi.coAndy Warhol* 这个图的写法似乎改成确定性的返回变量,也没有问题。理由如下: 1. 你是一种一次性执行的确定性单一变量。没有要封装出 一个 类似 JQuery 的模块。这个变量返回给了 M table ,所以不存在全局变量 2. 你的闭包没有不确定的外部全局变量的加载顺序问题。08:25:50

Show newer messages


Back to Room ListRoom Version: 6