js语法(4)

  1. 表达式语句由 运算符连接变量 或者 直接量构成

    A. PrimaryExpression 主要表达式
    * Primary Expression 表达式的原子项 ( 表达式的最小单位,所涉及的语法结构也是优先级最高的 )
    任何表达式加上圆括号都被称为 Primary Expression

     直接量
    
         直接用某种语法写出来的具有特定类型的值
             "Hello world"; 123; null; true;  false;
    
         直接量的形式定义对象 ( function、{和class开头的表达式语句与生命语句有语法冲突 所以要加上括号来避免语法冲突 )
    
             ({});
             (function(){});
             (class{ });
             [];
             /abc/g;
         标识符引用
             this;
             myVar;
    

    B. MemberExpression 成员表达式
    Member Expression 加上new 就是 NewExpression
    后加一个括号里的参数列表 或者用super关键字代替MemberExpression 就是 CallExpression

     * 通常是用于访问对象成员
         a.b;
         a["b"];
         new.target; // 判断函数是否被new调用
         super.b; // 构造函数中 访问父类的属性的语法
    
     不带参数列表的new运算优先级更低 不属于 Member Expression
    

    C. NewExpression NEW 表达式

         Member Expression 加上 new 就是 New Expression ( JS中默认独立的高优先级表达式都可以构成低优先级表达式 )
    
         class Cls{
           constructor(n){
             console.log("cls", n);
             return class {
               constructor(n) {
                 console.log("returned", n);
               }
             }
           }
         }
    
         new (new Cls(1));
         // cls 1
         // returned undefined
    
         第一层new 首先调用了构造函数里面的 cls 第二层new 调用了 return
         // new (new Cls(1)) (1) ; // returned 1
    

    D. CallExpression 函数调用表达式
    Member Expression 中的某一子结构具有函数调用 整个表达式就成为了一个 Call Expression

     a.b(c)(d)(e);
     a.b(c)[3];
     a.b(c).d;
     a.b(c)`xyz`;
    
     Call Expression 就失去了比 New Expression 优先级高的特性,这是一个主要的区分
    

    E. LeftHandSideExpression 左值表达式
    放到等号左边的表达式
    a() = b;

    F. AssignmentExpression 赋值表达式 ( JS语法_4.txt 是右边部分 )
    a = b
    a = b = c = d
    等价于:
    a = (b = (c = d))

     a += b;
     a = a + b;
     一共有这么多种效果 : *=、/=、%=、+=、-=、<<=、>>=、>>>=、&=、^=、|=、**=
    

    G. Expression 表达式

     表达式就是用逗号运算符连接的赋值表达式
     比赋值运算优先级更低的就是逗号运算符
    
     a = b, b = 1, null; ( 顺序执行 )
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值