zoukankan      html  css  js  c++  java
  • js:语言精髓笔记4----面向对象概要与运算符二义性

    实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号;所以注意这不是函数调用;

    直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因为直接量的声明中不包括运算过程,而初始器的声明中可以包括运算过程。

    • 直接量:一般分为6种,包括正则表达式声明;在引擎看来,其值是在编译期就确知的;
    • 初始器:包括函数,对象,数组声明;其本身可能是无法预期的。

    对象:

    • delete:能删除对象的大多数成员,包括全局对象Global的成员;不能删除var声明变量和直接继承自原型的成员;仅在删除一个不能删除的成员时才会返回false;
    • in:对象成员检查(包括继承和不可枚举):string in object;
    • for/in:枚举对象成员(包括继承);
    • propertyIsEnumerable():枚举对象成员(不包括继承);

    具有二义性的语法元素:(注意运算符和非运算符)

      • 连续运算符
      • 参数分隔符;
      • 对象/数组声明分隔符;
    • +
      • 增值运算符
      • 正值运算符
      • 连接运算符
    • ()
      • 函数调用运算符;
      • 强制运算,优先级;
      • 形式参数表;
    • ?:  (问号没有二义性)
      • 条件运算符
      • 冒号声明标签含义;
      • 冒号声明switch分支含义;
      • 冒号声明对象成员的含义;
    • []
      • 数组下标;(运算符
      • 对象成员存取;(运算符
      • 数组直接量声明;
    • {}
      • 函数直接量代码部分声明;
      • 对象直接量声明;
      • 复合语句;
      • 空语句;
      • 语句分隔符;

    加号:

    • 字符串连接优先;
    • 特别注意在DOM模型中使用;
       var el = document.getElementById(‘testpic’); 
       var value = parseInt(el.style.borderWidth);  //值
       var nuit =  el.style.borderWidth.substr(value.toString().length); //单位
    

    括号: 

    • 只做传值参数表: new;
    • 限定表达式的词法元素:具有将表达式结果转化为布尔值的副作用;
    • 强制表达式运算:如优先级;连续运算符运算,返回值为表达式最后一个值;
    • 函数/方法调用:一般此时括号前无空格,其他情况会有空格;注意标签与运算元是属于两个不同的标识符系统,所以不可以这样使用:
     break (my_label)
    

    逗号:  

    • 连续运算符; 如 :
    •   a = (1,2,3);//a为3,这个整个表达式返回3
        a = 1,2,3;//a为1,这个整个表达式返回3
      注意:
      var i = 100;
      alert(i +=20, i *=2, value); //函数中,逗号也作为连续运算,alert为函数只能传入第一个参数;
      

        

    • 语法分隔符; 如:
      var a = 1,2,3; //声明语句会将逗号解析成分隔符而出错;(var会使连续运算表达式变为连续声明语句)
      

        

    方括号: 

      由于方括号具有取值和数组直接量声明的功能;下面代码都无错误:

    var a = [1]  [1];
    var b = {} [0];
    

     需要注意的是当方括号作为数组直接量声明的时候,逗号为语法分隔符:

    var a = ['c',1,10];
    

     当方括号作为对象或数组取值的时候,逗号为连续运算符:

    var a = ['c',12,2] ['c',12,2]  //等价于  ['c',12,2] [2] ;a = 2; 
    

     (这里就要注意在写[[],[],[]]形式的时候漏掉逗号是不会报错的); 

     

  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4008719.html
Copyright © 2011-2022 走看看