第1741期JavaScript和TypeScript中的void

Posted 前端早读课

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1741期JavaScript和TypeScript中的void相关的知识,希望对你有一定的参考价值。

前言

现在ts抓紧看起来。今日早读文章由腾讯@CoyPan翻译授权分享。

@CoyPan,一名符合预期的前端工程师

正文从这开始~~

如果你是从传统的强类型语言转到javascript来的,那么你可能熟悉void的概念:一种类型,它告诉你和方法在调用时不返回任何内容。

void在JavaScript中作为运算符存在,在TypeScript中作为基本类型存在。在JS和TS中,的用法和大多数人习惯的有所不同。

JavaScript中的void

JS中的void是一个运算符,它对紧跟其后的表达式求值。不管是什么表达式,void总是返回undefined。

 
   
   
 
  1. let i = void 2; // i === undefined

为什么我们需要这么写?这是因为在早些时候,人们可以重写undefined,并且给它一个特定的值。void总是返回真正的undefined。

另外,void是一种调用立即执行函数的不错的方式。

 
   
   
 
  1. void function() {

  2. console.log('What')

  3. }()

可以避免污染全局命名空间:

 
   
   
 
  1. void function aRecursion(i) {

  2. if(i > 0) {

  3. console.log(i--)

  4. aRecursion(i)

  5. }

  6. }(3)


  7. console.log(typeof aRecursion) // undefined

由于void总是返回undefined,并且void总是会对表达式求值,所以有一个非常简单的方法,从函数返回而不返回值,但是仍然调用回调:

 
   
   
 
  1. // returning something else than undefined would crash the app

  2. function middleware(nextCallback) {

  3. if(conditionApplies()) {

  4. return void nextCallback();

  5. }

  6. }

我认为,void最重要的用法:因为void总是返回undefined,他是你app安全的守护者。

 
   
   
 
  1. button.onclick = () => void doSomething();

TypeScript中的void

TypeScript中的void是undefined的子。JS中的函数总会有返回,要么是一个具体的值,要么是undefined.

 
   
   
 
  1. function iHaveNoReturnValue(i) {

  2. console.log(i)

  3. } // returns undefined

在JS中,如果没有具体的返回值的函数会返回undefined,并且void总是会返回undefined,TS中的void是y一个合适的类型,告诉开发人员此函数返回undefined:

 
   
   
 
  1. declare function iHaveNoReturnValue(i: number): void

void作为一个类型,也可以用在函数参数和其他的声明上。唯一可以传入的值是void:

 
   
   
 
  1. declare function iTakeNoParameters(x: void): void


  2. iTakeNoParameters() //

    以上是关于第1741期JavaScript和TypeScript中的void的主要内容,如果未能解决你的问题,请参考以下文章

    第2145期JavaScript诞生25周年

    Domino 情报站 | 第1期 与 JavaScript 和 Node.js “组团开黑”

    第1453期理解JavaScript的柯里化

    第1719期简明 JavaScript 函数式编程-入门篇

    奇舞周刊第 217 期:TC39,ECMAScript 和 JavaScript 的未来

    第1389期一起探讨 JavaScript 的对象