如何实现 JavaScript 函数参数必填的支持?

JS 在 ES6 的中新增了函数参数指定默认值的支持: const Greeting = (name="Joeytat") => { console.log(`Hello ${name}`) } Greeting() // Hello Joeytat 那我们就可以利用这一特性, 将一个会抛出异常的方法作为默认参数传递. const Greeting = (name=EmptyPropertyException("name")) => { console.log(`Hello ${name}`) } const EmptyPropertyException = (propertyName) => { throw Error(`${propertyName} 为必填参数`) } Greeting() // 抛出异常: "Error: name 为必填参数" 这样如果没有传递参数就会抛出异常, 并且带有友好的提示了.

June 3, 2019

2018

刚毕业那阵儿还每年都写好长的总结, 然后这两年变懒了. 今年又想再记录一下了嘿 | ᐕ)⁾⁾ 年度 App: 多邻国 零基础学语言的感觉很不错. 年度电影: 《三块广告牌》 年度漫画: 《只有我不存在的城市》 忘了在哪被人推荐的了, 被安利到的话大概是这么说的「非常庆幸在没有被剧透的情况下一口气看完了」. 看完了之后感觉果然如此. 而且漫画真是存在着动画无法表现出的节奏感啊. 年度游戏: 《神界原罪 2》 接触的第一款 CRPG, 有趣到什么程度呢? 从游戏体验时发出「wow, 居然还能这样?」的频率来看, 和《塞尔达: 旷野之息》差不多吧. 年度虚构类图书: 《剑来》 不知道为啥现在提起网络文学, 多数时候对方都还是觉得「格」不够. 可现在的网络小说与《明报》连载的武侠小说, 有多大的区别? 年度非虚构类图书: 《邻人之妻》 我姓王和我看这本书没有任何联系(认真脸), 真的是好奇性美国解放运动到底是怎么产生的而看的. 年度电器: Sony 9000E 电视 大屏幕 4k HDR 的全新体验让我想把之前在显示器上玩的好游戏看的好电影都重新来一次. 年度音乐: 《生きていたんだよな(她曾活过啊)》 歌词很棒? 看到年度音乐四个字, 脑子里第一首出现的歌. 年度视频: 井越的 vlog——《别再问我什么是 2017》 看了几十个 Casey Neistat 的 vlog 也没能让自己行动起来用视频记录生活. 但看完这个视频的第二天, 就开始尝试着在大街上对着手机镜头说话啦. 年度电子产品: iPhoneX 用来拍了不少视频, 照片. 人像模式拍出的照片, 会让我这个摄影门外汉产生一种「自己拍的还不错嘛」的错觉, 从而达到了要经常掏出手机记录生活的目标. 希望明年也能多创造一些东西, 能够在 19 年的年终总结中, 选出自己满意的年度 XXX 吧

December 28, 2018

为什么 Cocoapods 1.5 支持编译静态库之后大家这么高兴?

昨天在 Twitter 上看到 TualatriX 说把私有库都通过 Cocoapods 编译成静态库之后很爽, 就有点好奇到底是爽在哪里. 于是去搜了一下, 原来是前段时间(大半年前吧…), Cocoapods 发布了 1.5 的 release note, 宣布支持 Swift 静态库编译. 并且文中提到了对于担心动态二进制文件影响应用启动速度的人来说, 这是个了不起的更新. jh 那又是为什么 App 使用静态库会比动态库有更快的启动速度呢? 又跑去搜了一下官方文档. 打开 Dynamic Library Programming Topics 开头就看到: This article introduces dynamic libraries and shows how using dynamic libraries instead of static libraries reduces both the file size and initial memory footprint of the apps that use them. 这篇文章主要介绍了动态库, 并且展示了通过使用动态库而不是静态库, 是如何缩减了应用的大小和初始内存空间的. ┻━┻ (ヽ(`Д ́)ノ( ┻━┻ 这和说好的不一样啊? ...

December 27, 2018