《ES6标准入门(第3版)》学习笔记9:chapter_3-6 圆括号问题

让学习“上瘾”,成为更好的自己!!!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>圆括号问题</title>
</head>
<body>
    <script>
    /*
    对于编译器来说,一个式子是模式还是表达式,只有解析到(或解析不到)等号才能知道

    如果模式中出现圆括号,该怎么处理?
    --> 只要可能导致解构歧义的,就不得使用圆括号

    【建议】只有有可能发生歧义,就不要在模式中放置圆括号

    
    */
    // 一,不能使用圆括号的情况

    // 1, 变量声明语句
    // 全部报错
    // let [(a)] = [1];
    // let {x: (c)} = {};
    // let ({x: c}) = {};
    // let {(x : c)} = {};
    // let {(x): c} = {};
    // let {o: ({p: p})} = {o: {p: 2}};



    // 2, 函数参数 --> 函数参数也属于变量声明
    // 以下都报错
    // function f([(z)]){
    //     return z;
    // }

    // function f([z, (x)]){
    //     return x;
    // }





    // 3, 赋值语句的模式部分
    // ({p: a}) = {p: 42};
    // ([a]) = [5];
    // 上面代码将“整个”模式放在圆括号之中,导致报错

    // [({p: a}), {x: c}] = [{}, {}];
    // 这一段代码将“一部分”模式放在圆括号之中,导致报错



    // 二,可以使用圆括号的情况 --> 赋值语句的非模式部分可以使用圆括号
    // 以下3条语句都可以正确执行,因为都是赋值语句,而不是声明语句,且圆括号都不属于模式的一部分
    [b] = [3];  // 模式是取数组的第一个成员,与圆括号无关
    console.log(b);
    ({p: (d)} = {});  // 模式是p
    [(parseInt.prop)] = [3]; 


    
    
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值