問號出頭天

栏目: CoffeeScript · 发布时间: 8年前

内容简介:剛剛掃了一下 TC39 新的草案,發現和可以像這樣用,中間任何一層回傳 falsy value 就會直接把值給 zip 變數,而不會繼續往下找,不會造成 Script 執行錯誤,不過目前看起來對於 function 的處理比 CoffeeScript 麻煩一點,要寫成

問號出頭天

剛剛掃了一下 TC39 新的草案,發現和 ? 相關的還不少,稍微來介紹一下這幾個很初期的草案吧:首先第一個是已經見過一陣子的 Optional Chaining,第一次看到這種語法是 CoffeeScript ,在 CoffeeScript 現在是叫 Existential Operator,不知道是不是以前就這個名字,對付多階層的物件特別好用:

let zip = lottery.drawWinner?.()?.address?.zipcode

可以像這樣用,中間任何一層回傳 falsy value 就會直接把值給 zip 變數,而不會繼續往下找,不會造成 Script 執行錯誤,不過目前看起來對於 function 的處理比 CoffeeScript 麻煩一點,要寫成 ?.() ,而不是 ?() ,其實我覺得也比較醜一些。

第二個是 Nullish Coalescing ,這是正港的用來設定變數 default 值用的,以前通常的作法是用 ||

function (option = {}) {
  let quick = option.quick || true;
}

在上面的範例中, quick 預期是 boolean 值,可能是 trueflase ,預期的預設值是 true ,不過這樣寫其實,如果傳 false 進來會誤判,結果會變成用預設值的 true ,新的 Nullish Coalescing 就是要來解決這個問題,把 || 換成 ??

function (option = {}) {
  let quick = option.quick ?? true;
}

這樣傳 false 時就不會被當成沒傳值,只有 nullundefined 才會用預設值,其實判斷的方式和第一個 Optional Chaining 一樣。

第三個是 Partial Application ,其實就是字面上的意思,不過是從 syntax 上就支援 partial 執行 function:

function add(x, y) { return x + y; }

const addOne = add(1, ?); // apply from the left
addOne(2); // 3

我覺得用 ? 這招還蠻漂亮的,雖然我還不太有機會用到 就是。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

REST实战

REST实战

Jim Webber、Savas Parastatidis、Ian Robinson / 李锟、俞黎敏、马钧、崔毅 / 东南大学出版社 / 2011-10 / 78.00元

为何典型的企业项目无法像你为web所开发的项目那样运行得如此平滑?对于建造分布式和企业级的应用来说,rest架构风格真的提供了一个可行的替代选择吗? 在这本富有洞察力的书中,三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业逐渐成长为......一起来看看 《REST实战》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具