#JavaScript #backend(上一条消息) 🤔 啊好难看的逻辑,其实就是
$_ = 函数(self、属性、补充项) 若 self 不为空且 self 有这个属性:
设 n 为 self[此属性]
若 n 不为空且 n 不为 undefined: (void 0,我也不知道为啥 ES6 又有这种奇葩语法了,JavaScript 为啥会有 void?)
返回 n
返回补充项
$_(e.ObjUtil || 定义 map e.Objutil, undefined, undefined)
好奇怪下面小括号里的 e 是哪里来的。
代码 before 和 after 又有什么区别,看不出... 缩进?
ObjUtil.<P> 的时候$_ = 函数(self、属性、补充项) 若 self 不为空且 self 有这个属性:
设 n 为 self[此属性]
若 n 不为空且 n 不为 undefined: (void 0,我也不知道为啥 ES6 又有这种奇葩语法了,JavaScript 为啥会有 void?)
返回 n
返回补充项
$_(e.ObjUtil || 定义 map e.Objutil, undefined, undefined)
好奇怪下面小括号里的 e 是哪里来的。
代码 before 和 after 又有什么区别,看不出... 缩进?
Forwarded from 羽毛的小白板
Before & After
duangsuse::Echo
#JavaScript #backend(上一条消息) 🤔 啊好难看的逻辑,其实就是 ObjUtil.<P> 的时候 $_ = 函数(self、属性、补充项) 若 self 不为空且 self 有这个属性: 设 n 为 self[此属性] 若 n 不为空且 n 不为 undefined: (void 0,我也不知道为啥 ES6 又有这种奇葩语法了,JavaScript 为啥会有 void?) 返回 n 返回补充项 $_(e.ObjUtil || 定义 map e.Objutil…
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
好愚蠢啊,居然连个例子都不会举,看了半天我才明白它是要说这个... 这么 trivial 的东西有啥好 show 的... 🤔
void function test() {
console.log('boo!');
// expected output: "boo!"
}();
弄了半天我才看到 void 领在 function 表达式前面,而我又看了两遍才注意到 {} 后面有个小括号... 也就是说它立即调用了 test 函数... hhh
ES6 好奇怪啊,为什么 test 被 function 赋 undefined 了,这么说还不能简单地认为 void 是 AST 合成属性咯?function test 难道不是说 var test = ... ? 居然还是先等语句真正的值
ES6 也是可怜,要背负这么重的历史包袱
好愚蠢啊,居然连个例子都不会举,看了半天我才明白它是要说这个... 这么 trivial 的东西有啥好 show 的... 🤔
void function test() {
console.log('boo!');
// expected output: "boo!"
}();
弄了半天我才看到 void 领在 function 表达式前面,而我又看了两遍才注意到 {} 后面有个小括号... 也就是说它立即调用了 test 函数... hhh
ES6 好奇怪啊,为什么 test 被 function 赋 undefined 了,这么说还不能简单地认为 void 是 AST 合成属性咯?function test 难道不是说 var test = ... ? 居然还是先等语句真正的值
void ...; 计算出来了再赋值?听起来真有 ES6 的风范ES6 也是可怜,要背负这么重的历史包袱
MDN Web Docs
void operator - JavaScript | MDN
The void operator evaluates the given
expression and then returns undefined.
expression and then returns undefined.
https://t.me/dsuse/9552
http://www.typescriptlang.org/play/#src=export%20namespace%20ObjUtil%0D%0A%7B%0D%0A%20%20%20%20export%20function%20_getProp(obj%3A%20Object%2C%20prop%3A%20string%2C%20defaultValue)%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(obj%20%26%26%20obj.hasOwnProperty(prop))%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20obj%5Bprop%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(result)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20result%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20defaultValue%3B%0D%0A%20%20%20%20%7D%0D%0A%7D
http://www.typescriptlang.org/play/#src=export%20namespace%20ObjUtil%0D%0A%7B%0D%0A%20%20%20%20export%20function%20_getProp(obj%3A%20Object%2C%20prop%3A%20string%2C%20defaultValue)%0D%0A%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(obj%20%26%26%20obj.hasOwnProperty(prop))%0D%0A%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20obj%5Bprop%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(result)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20result%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20defaultValue%3B%0D%0A%20%20%20%20%7D%0D%0A%7D
Telegram
duangsuse::Echo
Before & After
duangsuse::Echo
这样看应该明白吧
啊,是,谢谢,我最近设计的 Cat 正好需要一个 Reflection Access 的组件模块来抽象 Kotlin JVM/JS 的 Reflection 系统
我刚才没有注意到这是 ES6 模块
我刚才没有注意到这是 ES6 模块
#ES6 #PL 🤔 计算机科学要从前端抓起?
== UPDATE: 和计算机科学无关
这个回答以一种诙谐的方式解说了前端工程师们会遇到的这种『坑』。
说的是 ES6 的 OOP 模型而已,
莫名就会被坑,万恶的向前不兼容...
至于我为啥会把它当成计算机科学相关,是因为我把 Set 理解成集合(Set)了(Dependent Type,或者反正啥处理 Type subtyping 的程序,都会把比较基本的变量类型认为是『可取的类型集合』Set,当然依赖类型我完全不会但是后面一个是真的)... Define 被我当成是定义(Define)函数了... 😵
所以 🤔
... 祈祷不要再有人折腾我们可怜的前端了,他们成天设计一大堆页面 UI 也是很累的,有些人还要写 Animation...
== UPDATE: 和计算机科学无关
这个回答以一种诙谐的方式解说了前端工程师们会遇到的这种『坑』。
说的是 ES6 的 OOP 模型而已,
[[Set]] 使用 Prototype 对象模型(定义在对象的 Prototype 对象里)[[Define]] 却使用 Object 的自属性 Own PropertiesObject.getPrototypeOf("") //=> String
"".hasOwnProperty("repeat") //=> false
"".__proto__.hasOwnProperty("repeat") //=> true
而且,JavaScript 界通用的 ES6 翻译器,Babel,在一个大版本里修改了自己的默认属性行为,从 [[Set]] 到 [[Define]]莫名就会被坑,万恶的向前不兼容...
至于我为啥会把它当成计算机科学相关,是因为我把 Set 理解成集合(Set)了(Dependent Type,或者反正啥处理 Type subtyping 的程序,都会把比较基本的变量类型认为是『可取的类型集合』Set,当然依赖类型我完全不会但是后面一个是真的)... Define 被我当成是定义(Define)函数了... 😵
所以 🤔
... 祈祷不要再有人折腾我们可怜的前端了,他们成天设计一大堆页面 UI 也是很累的,有些人还要写 Animation...
Forwarded from 羽毛的小白板
Forwarded from 羽毛的小白板
Delegate.BeginInvoke 简直是 .Net API 设计中的一个污点
https://devblogs.microsoft.com/dotnet/migrating-delegate-begininvoke-calls-for-net-core/
https://devblogs.microsoft.com/dotnet/migrating-delegate-begininvoke-calls-for-net-core/
Microsoft News
Migrating Delegate.BeginInvoke Calls for .NET Core
I recently worked with a couple customers migrating applications to .NET Core that had to make code changes to workaround BeginInvoke and EndInvoke methods on delegates not being supported on .NET Core. In this post, we’ll look at why these APIs aren’t implemented…
羽毛的小白板
https://twitter.com/linuxtoy/status/1110872921684086785
哈哈哈,不过我觉得很有可能直接 syntax error 的吧... ShellScripts 还是太魔性了
估计那一行展开成
估计那一行展开成
rm -rf </data/...> <//> <备份...>/* 了,第二项就开始 rm -rf / 了,emmmm 🤔👍This media is not supported in your browser
VIEW IN TELEGRAM
在 #KDE Plasma (K5) 的 Dolphin 里,新建文件夹有快捷键:F10 (貌似)
Forwarded from Rachel 碎碎念 (IFTTT)
Twitter
Rachel (ノД`)シクシク
Bandizip 最好用的功能其实是在任意文件夹都能右键在一级菜单内找到新建文件夹…习惯了就回不去了(
duangsuse::Echo
在 #KDE Plasma (K5) 的 Dolphin 里,新建文件夹有快捷键:F10 (貌似)
快捷键难记、构建系统的属性难记、XML 标签和属性难记、CSS 属性很多也不好记、Java 的 Properties 也是很难弄 proper,唉。
duangsuse::Echo
快捷键难记、构建系统的属性难记、XML 标签和属性难记、CSS 属性很多也不好记、Java 的 Properties 也是很难弄 proper,唉。
This media is not supported in your browser
VIEW IN TELEGRAM