带可选布尔类型与默认值的JS函数声明:文档与命名咨询
关于这个函数声明的详解
嘿,作为React Native新手能注意到这个细节真的很棒!让我帮你拆解清楚这个语法:
这个声明是两个特性的组合
你看到的functionName(isTrue: ?boolean = true)其实是Flow静态类型注解 + ES6函数默认参数的结合,没有单独的统一名称,我们可以拆开来看:
1. : ?boolean — Flow的可空类型注解
这是Facebook为JavaScript推出的静态类型检查工具Flow里的语法:
: boolean是类型注解,用来明确参数isTrue的预期类型是布尔值- 前面的
?表示这个类型是可空的,意思是isTrue不仅可以是true/false,还允许传入null或undefined
2. = true — ES6的函数默认参数
这是ES6(ECMAScript 2015)新增的特性:当调用函数时没有传入isTrue参数,或者传入的是undefined,这个参数会自动使用true作为默认值。
文档参考
- 关于Flow的可空类型:你可以在Flow官方文档的「Nullable Types」章节找到详细说明
- 关于ES6默认参数:可以查看MDN的函数默认参数相关内容,或者ES6官方规范的对应部分
调用场景示例
为了帮你更好理解,举几个实际调用的情况:
functionName()→isTrue取值为true(默认参数生效)functionName(true)→isTrue取值为truefunctionName(false)→isTrue取值为falsefunctionName(null)→ Flow会允许这个调用,isTrue取值为null(函数里的if判断会把null视为false)functionName(undefined)→isTrue取值为true(默认参数生效)
因为React Native项目经常会用Flow做类型检查,所以这种带类型注解的函数声明在RN代码里特别常见哦!
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

