Skip to content

Commit

Permalink
prettier格式化
Browse files Browse the repository at this point in the history
  • Loading branch information
navono committed Sep 10, 2017
1 parent 8548d1f commit 19d50bb
Show file tree
Hide file tree
Showing 7 changed files with 309 additions and 350 deletions.
4 changes: 3 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module.exports = {
"extends": [
"eslint:recommended",
// "plugin:node/recommended"
"prettier"
],
parser: 'babel-eslint',
"plugins": [
Expand All @@ -10,7 +11,8 @@ module.exports = {
"html",
"react",
"babel",
"node"
"node",
"prettier"
],
"env": {
"browser": true,
Expand Down
42 changes: 20 additions & 22 deletions basicSyntaxSample/Understanding-ES6/Destructuring.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,51 @@
//**************************************************************************** */
// Object Destructuring
let node = {
type: 'Identifier',
name: 'foo',
loc: {
start: {
line: 1,
column: 1
},
end: {
line: 1,
column: 4
}
}
type: 'Identifier',
name: 'foo',
loc: {
start: {
line: 1,
column: 1
},
end: {
line: 1,
column: 4
}
}
};

let type = 'Literal';
let name = 5;

function outputInfo(value) {
console.log(value === node);
console.log(value === node);
}

let { loc: { start } } = node;

outputInfo({type, name} = node);
outputInfo(({ type, name } = node));
// console.log(start.line);
// console.log(start.column);


//**************************************************************************** */
// Array Destructuring
let colors = [ 'red', 'green', 'blue' ];
let [ firstColor, secondColor ] = colors;
let [ , , thirdColor ] = colors;
let colors = ['red', 'green', 'blue'];
let [firstColor, secondColor] = colors;
let [, , thirdColor] = colors;
// console.log(firstColor); // "red"
// console.log(secondColor); // "green"
// console.log(thirdColor); // "blue"


// 交换
let a = 1, b = 2;
let a = 1,
b = 2;
[a, b] = [b, a];
// console.log(a);
// console.log(b);

// Rest items
let [ firstColor2, ...restColors ] = colors;
let [firstColor2, ...restColors] = colors;
console.log(restColors.length);

// clone
Expand All @@ -58,4 +57,3 @@ let [...clonedColors] = colors;

//**************************************************************************** */
// Destructured Parameters

177 changes: 83 additions & 94 deletions basicSyntaxSample/Understanding-ES6/IteratorsGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,35 @@
// 迭代器带有一个内部指针,来指向集合中某个值的位置。当 next() 方法调用后,指针下一位置的值会被返回

function createIterator(items) {
let i = 0;
return {
next: function() {
let done = (i >= items.length);
let value = !done ? items[i++] : undefined;

return {
done,
value
}
}
}
let i = 0;
return {
next: function() {
let done = i >= items.length;
let value = !done ? items[i++] : undefined;

return {
done,
value
};
}
};
}

let iterator = createIterator([1,2,3]);
let iterator = createIterator([1, 2, 3]);
// console.log(iterator.next());
// console.log(iterator.next());
// console.log(iterator.next());
// console.log(iterator.next());


//**************************************************************************** */
// Generator
// 返回迭代器的函数。生成器函数由 function 关键字和之后的星号(*)标识,同时还能使用新的 yield 关键字。
// 星号的位置不能论是放在 function 关键字的后面还是在它们之间插入空格都是随意的。

function *createGenerator() {
yield 1;
yield 2;
yield 3;
function* createGenerator() {
yield 1;
yield 2;
yield 3;
}

let iterator2 = createGenerator();
Expand All @@ -43,131 +42,121 @@ let iterator2 = createGenerator();
// console.log(iterator2.next().value);
// console.log(iterator2.next().value);


//**************************************************************************** */
// Generator函数表达式
// 无法使用箭头函数来创建生成器。

let createGenerator2 = function *(items) {
for (let i = 0; i < items.length; i++) {
yield items[i];
}
}


let createGenerator2 = function*(items) {
for (let i = 0; i < items.length; i++) {
yield items[i];
}
};

//**************************************************************************** */
// 可迭代类型与 for-of
// 可迭代类型是指那些包含 Symbol.iterator 属性的对象

let values = [1, 2, 3];
for (let num of values) {
console.log(num);
console.log(num);
}
// 0, 1, 2


// 访问默认迭代器
// let iter = values[Symbol.iterator]();

// console.log(iter.next());

function isIterable(object) {
return typeof object[Symbol.iterator] === 'function';
return typeof object[Symbol.iterator] === 'function';
}


//**************************************************************************** */
// 创建可迭代类型
let collection = {
items: [],
*[Symbol.iterator]() {
for (let item of this.items) {
yield item;
}
}
}
items: [],
*[Symbol.iterator]() {
for (let item of this.items) {
yield item;
}
}
};

collection.items.push(1);
collection.items.push(2);
collection.items.push(3);

for (let x of collection) {
console.log(x);
console.log(x);
}



//**************************************************************************** */
// 生成器代理

function *createNumberIterator() {
yield 1;
yield 2;
function* createNumberIterator() {
yield 1;
yield 2;
}

function *createColorIterator() {
yield 'red';
yield 'green';
function* createColorIterator() {
yield 'red';
yield 'green';
}

function *createCombinedIterator() {
yield *createNumberIterator();
yield *createColorIterator();
yield true;
function* createCombinedIterator() {
yield* createNumberIterator();
yield* createColorIterator();
yield true;
}

const iterator3 = createCombinedIterator();
console.log(iterator3.next()); // "{ value: 1, done: false }"
console.log(iterator3.next()); // "{ value: 2, done: false }"
console.log(iterator3.next()); // "{ value: "red", done: false }"


console.log(iterator3.next()); // "{ value: 1, done: false }"
console.log(iterator3.next()); // "{ value: 2, done: false }"
console.log(iterator3.next()); // "{ value: "red", done: false }"

//**************************************************************************** */
// 运行异步任务

function run(taskDef) {
// 创建迭代器,使它们可以在别处使用
let task = taskDef();

// 任务开始执行
let result = task.next();

// 递归函数持续调用 next()
function step() {
if (!result.done) {
// result = task.next();
// result = task.next(result.value);

if (typeof result.value === 'function') {
result.value((err, data) => {
if (err) {
result = task.throw(err);
return;
}

result = task.next(data);
step();
});
} else {
result = task.next(result.value);
step();
}
}
}

// 开始递归
step();
// 创建迭代器,使它们可以在别处使用
let task = taskDef();

// 任务开始执行
let result = task.next();

// 递归函数持续调用 next()
function step() {
if (!result.done) {
// result = task.next();
// result = task.next(result.value);

if (typeof result.value === 'function') {
result.value((err, data) => {
if (err) {
result = task.throw(err);
return;
}

result = task.next(data);
step();
});
} else {
result = task.next(result.value);
step();
}
}
}

// 开始递归
step();
}


// 例子
run(function*() {
console.log('start mission');
yield;
console.log('kill the boss');
yield;
console.log('mission completed');
yield;
})
console.log('start mission');
yield;
console.log('kill the boss');
yield;
console.log('mission completed');
yield;
});
Loading

0 comments on commit 19d50bb

Please sign in to comment.