javascript1.7新语法简单介绍

 代码如下 复制代码

<script type="application/javascript;version=1.7">

<script type="application/javascript;version=1.7">
 void function (){
     if(true){
         var a=1;
         console.log(a);//1
     }
     console.log(a);//1
 }()
 </script>

1.yield 关键字

 

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

 

2.生成器Generators

 

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

1.yield 关键字

 

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

 

2.生成器Generators

 

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

迭代器

 

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

 代码如下 复制代码

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

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

4.数组领悟。

这是来自python的语法,现在引入js可以极大的提高生产力。

语法如下 array=[value for each (variable in values) condition ];

 代码如下 复制代码

var a=[1,3,6,13,0,94,222];

A.

1 for each(i in a){ if(i){console.log(i)}} //类似for in的古老用法。
B.

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

C.

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

D. 处理对象

 代码如下 复制代码

for each(let [j,k] in new Iterator(a)){
 
 
 console.log(j +' '+k)
 
 
 };

5.结构赋值

这个非常简单

var [a,b]=[1,2,3,4]; //a=1 b=2

6.let关键字 创建块级作用域

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

 代码如下 复制代码

void function (){
     if(true){
         let a=1;
         console.log(a);//1
     }
     console.log(a);//undefined
 }()

在看看var

void function (){
     if(true){
         var a=1;
         console.log(a);//1
     }
     console.log(a);//1
 }()

时间: 2024-11-29 11:44:43

javascript1.7新语法简单介绍的相关文章

JavaScript6 let 新语法优势介绍_javascript技巧

最近看国外的前端代码时,发现ES6的新特性已经相当普及,尤其是 let,应用非常普遍 虽然 let 的用法与 var 相同,但不管是语法语义上,还是性能上,都提升了很多,下面就从这两方面对比一下 语法>> for ( var i=0; i<2; i++){ console.log( 'outer i: ' + i); for ( var i=0; i<2; i++){ console.log( 'inner i: ' +i); } } 这是一个常见的嵌套循环,都定义了变量 i 来计

PHP 7的一些引人注目的新特性简单介绍_php技巧

1. ?? 运算符(NULL 合并运算符)把这个放在第一个说是因为我觉得它很有用.用法: $a = $_GET['a'] ?? 1; 它相当于: <?php $a = isset($_GET['a']) ? $_GET['a'] : 1; 我们知道三元运算符是可以这样用的: $a ?: 1 但是这是建立在 $a 已经定义了的前提上.新增的 ?? 运算符可以简化判断. 2. 函数返回值类型声明官方文档提供的例子(注意 ... 的边长参数语法在 PHP 5.6 以上的版本中才有): <?php f

php7.1新特性简单介绍

Allow specifying keys in list() Square bracket syntax for array destructuring assignment 下面这个支持效果,还是不错的 list($a, $b) = array($b, $a); [$a, $b] = [$b, $a];   foreach ($points as ["x" => $x, "y" => $y]) {     var_dump($x, $y); } 这个

C++11的新特性简单汇总介绍 (二)_C 语言

1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; for(int x: vec) { cout<<x<<endl; } 2. 尾置返回类型 要想引入尾置类型,我们还得从复杂的类型声明说起.如果我们需要定义一个含有10个int元素的数组,一般是这样的: int arr[10] = {0}; 如果要定义指向这个数组的指针呢: 复制代码 代

C++11的新特性简单汇总介绍 (一)_C 语言

什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外). C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto.decltype,和模板的大量改进. 1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己

PHP7 RC7 Release对比PHP5.6快速排序20000数据性能体验以及新语法尝鲜

最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能的因素,主要增加了以下Features . Improved performance: PHP 7 is up to twice as fast as PHP 5.6 性能比5.6提高2倍 Consistent 64-bit support 64位一致性支持Many fatal errors are

ES2015新语法详解——生成器(Generator)

引言:生成器(Generator)可以说是在ES2015中最为强悍的一个新特性,因为生成器是涉及ECMAScript引擎运行底层的特性,可以实现一些从前无法想象的事情. 本文选自<实战ES2015:深入现代JavaScript 应用开发>. 1由来 生成器第一次出现在CLU语言中CLU语言是由美国麻省理工大学的Barbara Liskov教授和她的学生们在1974年至1975年间所设计和开发出来的,这门语言虽然古老,但是却提出了很多如今被广泛使用的编程语言特性,生成器便是其中的一个. 在CLU

Linux curl使用简单介绍

<转自:http://www.cnblogs.com/-clq/archive/2012/01/29/2330827.html> Linux curl使用简单介绍[日期:2008-01-29]     来源:Linux公社  作者:notech Curl是Linux下一个很强大的http命令行工具,其功能十分强大. 1) 二话不说,先从这里开始吧! $ curl http://www.linuxidc.com 回车之后,www.linuxidc.com 的html就稀里哗啦地显示在屏幕上了  

Sed and awk 笔记之 sed 篇:简单介绍

自己博客上搬运过来的文章,抛砖引玉,系列原文地址:http://kodango.com/tag/sed-and-awk/,文章中的链接暂时还未修改,不好意思. 最近在阅读<sed & awk>,这本书是sed和awk相关书籍中比较经典的一本.我在读书的时候有一个习惯,就是会作一些笔记,如果有条件我会放到博客中.写博客不仅是给别人看的,更是写给自己看的,同时因为写给别人看,所以必然会在一些细节的地方写得很清楚明了,可以加深自己对原书的理解,同时以后回头看的时候,我自己也能快速的回忆起来.