zoukankan      html  css  js  c++  java
  • javascript1.7新语法

    1.yield 关键字 
    Yield的作用与return 差不多,都会返回一个结果。但是return会跳出函数,yield可以多次使用直到运算不能进行。(Yield也是一个c#的关键字)。 

    2.生成器Generators 
    当一个函数使用yield指定返回值时,可以把他当做生成器来使用。如果调用了包含yield函数则会得到一个生成器的实例。每次调用生成器实例的next方法,就会得到一个运算结果。如果超出生成器的边界就会得到一个object StopIteration的错误。因为yield的关系,不能准确的得到生成器的长度,所以用try语句处理一下。当生成器使用完毕后,调用close方法,会强制关闭生成器。 

    Java代码  收藏代码
    1. <script type="application/javascript;version=1.8">  
    2. function getNumber(){  
    3.     for(let i=0;i<10;i++){  
    4.         yield i*2;  
    5.     }  
    6. }  
    7. var generators= getNumber();  
    8.     try{  
    9.         while(generators){  
    10.             console.log(generators.next());  
    11.         }  
    12.     }catch(e){  
    13.   
    14.     }finally{  
    15.         generators.close();  
    16.     }  
    17. </script>  


    3.迭代器 
    如果对for和for in使用非常厌恶的同学,可以试试迭代器。即使不使用循环也能达到同样的目的,而且迭代器可以支持任意类型的对象。 

    Java代码  收藏代码
    1. var arr=['a','b','c'],it=new Iterator(arr); //{'1':'a','2':'b','3':'c'}  
    2. try{  
    3.     while(it){  
    4.         console.log(it.next()); //[0, "a"][1, "b"][2, "c"]  // [1, "a"][2, "b"][3, "c"]  
    5.     }  
    6. }catch(e){};  


    调用迭代器的next方法会返回一个数组,第一项是下标或者key,第二项是对应的值。如果超出边界的话会返回一个object StopIteration的错误。 

    ]4.数组领悟。[/b] 
    这是应python的语法,现在引入js可以极大的提高生产力。 
    语法如下 array=[value for each (variable in values) condition ]; 
    var a=[1,3,6,13,0,94,222]; 
    A.
    Java代码  收藏代码
    1. for each(i in a){ if(i){console.log(i)}} //类似for in的古老用法。  


    B.
    Java代码  收藏代码
    1. var b=[i*2 for each(i in a) if(i%3===0)];// [6,12,0,444] 得到一个新数组  


    C.
    Java代码  收藏代码
    1. var b=(i*2 for each(i in a) if(i%3===0));//获得一个生成器。  
    2.     try{  
    3.         while(b){  
    4.             console.log(b.next());// 6 12 0 444  
    5.         }  
    6.     }catch(e){};   

    D. 处理对象 
    Java代码  收藏代码
    1. for each(let [j,k] in new Iterator(a)){  
    2.         console.log(j +' '+k)  
    3.     };   


    5.结构赋值 
    这个非常简单,听说也是来自python的语法 
      
    Java代码  收藏代码
    1. var [a,b]=[1,2,3,4]; //a=1 b=2  
    2. var {px,height:pec}={80,height:'5'};  


    6.let关键字 创建块级作用域 
    在现在使用广泛的javascript1.5是没有块级作用域的。用var定义变量,由于解析器变量提升的关系经常不小心就踩到地雷,现在福音来了! 

    Java代码  收藏代码
    1. void function (){  
    2.     if(true){  
    3.         let a=1;  
    4.         console.log(a);//1  
    5.     }  
    6.     console.log(a);//undefined  
    7. }()  
  • 相关阅读:
    PAT 1010. 一元多项式求导 (25)
    PAT 1009. 说反话 (20) JAVA
    PAT 1009. 说反话 (20)
    PAT 1007. 素数对猜想 (20)
    POJ 2752 Seek the Name, Seek the Fame KMP
    POJ 2406 Power Strings KMP
    ZOJ3811 Untrusted Patrol
    Codeforces Round #265 (Div. 2) 题解
    Topcoder SRM632 DIV2 解题报告
    Topcoder SRM631 DIV2 解题报告
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468559.html
Copyright © 2011-2022 走看看