Bar*_*ney 1 javascript parsing destructuring ecmascript-6
使用数组解构,可以通过插入逗号而不使用前面的引用来丢弃前导项:
const [ , two ] = [ 1, 2 ]
Run Code Online (Sandbox Code Playgroud)
函数签名也是如此 - 以下代码不会解析,因为签名中的前导逗号是意外的:
function ditchFirstArgument( , second ){}
Run Code Online (Sandbox Code Playgroud)
为什么我需要为ES6函数表达式中的前导参数提供参考?
小智 5
为什么我需要为ES6函数表达式中的前导参数提供参考?
因为否则会出现语法错误.不仅仅是ES6,而且任何版本的语言都不能忽略正式参数,因为规范没有规定它.
如果你真的想这样做(但为什么?),你可以把它写成
function ditchFirstArgument(...[, second]) {}
Run Code Online (Sandbox Code Playgroud)
或者至少你将能够在ES的某个未来版本中使用; 请参阅https://github.com/tc39/ecma262/commit/d322357e6be95bc4bd3e03f5944a736aac55fa50.这似乎已经在Chrome中得到支持.同时,你能做的最好的事情就是
function ditchFirstArgument(...args) {
const [, second] = args;
Run Code Online (Sandbox Code Playgroud)
但为什么规范不允许省略参数?
你不得不问那些写它的人,但他们可能从来没有考虑过它,或者他们是否这样做,拒绝它,因为它容易出错,几乎没有必要,并且可以很容易地使用虚假的形式参数来解决_.
罗马的见解,其中令牌从围棋是有用的,但不恰当的JS_ 是一个有效的参考,通常使用的下划线,后来Lodash库。
即使这是可以接受的,您也必须为每个未使用的参数创建并避免无用的引用,这并不理想。
但是,可以将函数参数解构为空对象,这有效地使参数无效而无需引用。
function take_third( {}, {}, third ){
return third
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如保罗在评论中指出的那样,如果任何跳过的参数值为nullor ,这将抛出undefined。undefined可以使用默认分配来保护值,但这不适用于null:
function take_third( {} = {}, {} = {}, third ){
return third
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |