問號出頭天

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

内容简介:剛剛掃了一下 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

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


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

查看所有标签

猜你喜欢:

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

创业头条

创业头条

[美]兰德尔•莱恩(Randall Lane)及《福布斯》杂志编辑部 / 孙莹莹 / 浙江人民出版社 / 2015-6 / 54.90

[内容简介] 全民创业的浪潮中,如何抓住共享经济带来的机遇?没有营收模式还一直烧钱的公司,如何赢得投资人的青睐?一轮死、二轮死、N轮死的魔咒下,怎样才能成功活下来?面对数十亿美元的收购要约,创始人究竟应该如何抉择?没有资金又不懂技术,是否就无法分享互联网创业的红利?《创业头条》一书将为你揭秘上述问题的答案。 阅读《创业头条》一书你会发现,在硅谷最新崛起的互联网亿万富豪身上,有这样一......一起来看看 《创业头条》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具