ecmascript6入门】的更多相关文章

今天在看<ECMAScript6入门>的第17章——Generator函数的语法.理解起来还是有点费劲,几段代码看了很多遍.总算有点点理解了. 示例代码如下:(摘自阮一峰<ECMAScript 6 入门>) function* foo(x) { var y = 2 * (yield (x + 1)); var z = yield (y / 3); return (x + y + z); } var a = foo(5); a.next() // Object{value:6, do…
一.基本语法-let命令 (1)ES6新增了let命令,用来声明变量.所声明的变量,只在let命令所在的代码块内有效. 循环的计数器,就很合适使用let命令.计数器i只在for循环体内有效,在循环体外引用就会报错. 另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域. (2)不存在变量提升 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined. 为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在…
ECMAScript 6 入门  阮一峰…
let 命令 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 [注]:let与var相似,用来声明变量.但是只在它所在的代码块内有效 for (let i = 0; i < 10; i++) {} console.log(i); //Uncaught ReferenceError: i is not defined console.log(foo); // 输出undefined console.l…
let和const命令 let命令 循环体的let变量只对花括号作用域可见,花括号外不可见 循环体的语句部分是一个父作用域,而循环体内部是一个单独的子作用域 let声明的变量不存在变量提升,未声明的使用会报错 只要块级作用域内存在let声明,它所声明的变量就绑定了这个区域,不再受外部的影响 let不允许在相同的作用域重复声明同一个变量,子父级作用域可以同名变量声明 const命令 const常量的值一旦声明就不得改变 const一旦声明变量,就必须立即初始化,不能留到以后赋值 const的作用域…
块级作用域 1:let命令声明的变量只在let命令所在的代码块有效--简而言之 大括号既是代码块,也就是说存在块级作用域了. { let a =10; var b =1; } a // ReferenceError: a is not defined. b 重点:所以let命令很适合在for循环当中,并且for循环的设置循环变量的那个区域是个父级作用域,循环体里面是一个子作用域 注释:上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出…
(1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = 3; //ES6 允许写成下面这样. let [a, b, c] = [1, 2, 3]; 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值. tips:ES6 内部使用严格相等运算符(===),判断一个位置是否有值.所以,只有当一个数组成员严格等于undef…
为函数参数设定默认值 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello 注意:参数变量是默认声明的,所以不能用let或const再次声明 使用参数默认值时,函数不能有同名参数 // 不报错 function foo(x, x, y) { // ... } // 报…
目的:将大程序拆分成互相依赖的小模块文件.CommonJS 和 AMD 两种,前者用于服务器,后者用于浏览器.他俩都是运行时才确定 :ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量 // CommonJS模块 let { stat, exists, readFile } = require('fs'); // 等同于 let _fs = require('fs'); let stat = _fs.stat; let exists = _fs.exis…
ES6 允许按照一定模式,先=从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话的解释:第一步从数组或者对象中提取值,第二步将提取到的值对变量进行赋值 数组的解构赋值 重点:如果等号的右边不是可遍历的解构,那么就会报错. //以前,为变量赋值,只能直接指定值 let a = 1; let b = 2; let c = 3; //ES6 允许写成下面这样 let [a, b, c] = [1, 2, 3]; 注释:可以从数组中提取值,按照对应位置,对变量赋值…