• 运算符的优先级


      在日常的工作中,我们会遇到各种各样的运算,赋值运算、对比运算、一元运算、逻辑运算、三元运算、算术运算,可以说在运算是我们前端工作必不可少的内容,而对于运算符以及运算符的优先级我们是否都弄清楚了呢?

    一、首先我列出我在学习过程中遇到的新的运算符:

      1、展开运算符...

        这个的学习我是参照这个地址:http://www.jianshu.com/p/c5230c11781b  写的非常好,在这里给他点个赞。获益匪浅

        在这里简单列举一下:不使用apply调用函数、合并数组、拷贝数组、解构赋值、Math.min(...Array)、将NodeList、arguments转换为数组

      2、yied与yied*

        在学习yied的过程中学习了Iterator与generator,在我的理解中yied更像是打了一个断点,返回断点当前状态。

        官方的解释是: 

      •   1.可以没有真正的集合(像Array),只要有相应的生成规则就行。这种情况下,没有内存的限制,因此可以表示无限序列。
      •   2.不调用next(),迭代器不进行迭代的,因此有延迟加载的特性。
      •   3.迭代器,本质上是一个状态机,每个状态下,进行一些操作,然后进入下一个状态或维持状态不变。

              而yield与yield*的区别是:

        yield 的返回值是当作一个元素
                yield* 的返回值是一个 iterator,会依次返回这个 iterator 中的每个元素

      3、按位与、安慰或、安慰异或、按位左移、按位右移、无符号右移

      4、void

        void在前端的应用比较少,有以下几种用法:

        (1)、<a href=‘javascript:void(0);’></a>  取消a连接跳转

          (2)、void function () {} ()  转换函数申明为函数调用,并申明函数的返回值为undefined,并函数自调用

          在这里说明一点,function (){}(),这样调用的会报错,function fn(){}()也会报错,第一个报错是没有函数名,第二个报错是浏览器解析会认为‘}’就结束了,后面的()是另一个语句,而单独的()会直接报错。

        (3)、void(0)返回undefined, 所以void(0)==undefined 、typeof void(0) == undefined、void(0)==void 0;

     二、运算符的优先级

      在这儿我是借鉴该网址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Associativity

      在这里我只列出我新get到的知识,基础的去看,上面的网址:

        1、优先级最高的是();

        2、成员访问(xx.xx或xx[xx])、函数调用、new(带参数列表)属于次一级的优先级  eg: new Math(),且运算顺序是从左往右

        3、new(不带参数列表)属于第三级优先级 eg: new Math

      容易搞混的就是第2点和第三点的优先级与运算顺序

  • 相关阅读:
    正向代理和反向代理
    Unicode
    utf-8
    ISO 8895-1
    ProtocalBuffers学习记录
    C#基础知识
    MSBuild学习记录
    Linux学习笔记
    Jenkins学习记录
    CruiseControl.Net学习记录
  • 原文地址:https://www.cnblogs.com/fqlGlog/p/7264724.html
Copyright © 2020-2023  润新知