1. Void
void in JavaScript
let i = void 2; // i === undefined
Why 为什么需要void?
因为早期js里,人们可以重写undefined,然后赋予真正的值给它,而void总是返回真正的undefined。
- void在JS里是一个类似单目运算符的存在。
- void提供了一种立即执行函数的方式,可以不需要借助函数表达式。
void function() {
console.log('what')
}()
- 使用void可以避免污染全局变量。
void function aRecursion(i) {
if(i > 0) {
console.log(i--)
aRecursion(i)
}
}(3)
console.log(typeof aRecursion) // undefined
函数aRecursion执行完后立即释放, 全局作用域也无法获取到这个引用。因为void总是可以执行它后面的表达式。
- 使用void执行函数会同时执行传入的回调。
function middleware(nextcb) {
if(conditionApplies()){
return void nextcb();
}
}
- void最重要的用例: 就是保证函数永远返回
undefined
,因为返回值是动态地,返回值可能会根据方法内的逻辑返回,但是void却可以100%保证返回undefined
。
button.onclick = () => void doSomething();
void in TypeScript
定义
- void在ts里面则是一种基本类型。
- void在ts也是
undefined
的子类型。
用法
- 在ts中,如果函数没写返回类型,或者没有return语句,自动返回
undefined
function () {
console.log('xx')
}
void
可以作为类型声明中的参数。
declare function iTakeNoParameters(x: void): void
此时只有
undefined
可以作为参数传入
iTakeNoParameters(undefined) //