学习ReactNative笔记二 __ECMAScript新功能

学习ReactNative笔记二 __ECMAScript新功能

★★★笔记时间- 2017-1-10 ★★★

请教一个问题:第30和31的时候在导入使用import的时候总

是报错,不明白是哪里的问题,请大家帮我解决一下,谢谢。

ES5使用了:Bable,JSPM

1.块的作用域:以前有全局作用域和函数作用域,现在还有一个块级作用域;let

工具:Atom的插件使用

作用域:就是一个变量的有效范围


if (true){
//    var fruit = '霜'; //这里是全局都可以访问
    let fruit = '震';//let 定义的变量,只能在这个块里面使用它。这就是块作用域,只能在这个块中进行访问,外部是不能访问的;会报错
}
console.log(fruit);

2. 恒量:const不能重新的进行赋值;限制的是给恒量分配值的动作,并不是限制恒量里面的那个值

'use strict';

const fruit = 'AA';//定义一个恒量,使用const
// fruit.push("A");
console.log(fruit);

const fruit = 'BB';
console.log(fruit);

报错:

script.js:7 Uncaught SyntaxError: Identifier 'fruit' has already been declared
'use strict';

const fruit = [];
fruit.push('A');
fruit.push('B');
console.log(fruit);

'use strict';

const fruit = [];
fruit.push('A');
fruit.push('B');
const fruit = [];
console.log(fruit);

报错:

ncaught SyntaxError: Identifier 'fruit' has already been declared

3.解构数组:Array Destructuring

'use strict';

function brakfast(){
  return ['A', 'B', 'C'];
}

var tmp = brakfast(),

  desset = tmp[0], drink = tmp[1], fruit = tmp[2];

// let [desset, drink, fruit] = brakfast();

  console.log(desset, drink, fruit);//这里会报错

4.解构对象:Object Destructuring

'use strict';

function brakfast(){
  return {dessert: 'A', drink: 'B', fruit:'C'};
}

let {dessert: dessert, drink: drink, fruit: fruit} = brakfast();
  console.log(dessert, drink, fruit);

5.模板字符串:Template String

字符串拼接:

'use strict';

let dessert = 'A',
    drink = 'B';

let breakFast = '今天的早餐是' + dessert + drink;

console.log(breakFast);

另一种写法:

'use strict';

let dessert = 'A',
    drink = 'B';

let breakFast = `今天的早餐是${dessert}与${drink}`;

console.log(breakFast);

6.带标签的字符串模板:Tagged Templates

标签就是一个函数:

'use strict';

let dessert = 'A',
    drink = 'B';

let breakFast = kitchen`今天的早餐是${dessert}与${drink}`;

function kitchen(strings, ...values){
  console.log(strings);
  console.log(values);
}
'use strict';

let dessert = 'A',
    drink = 'B';

let breakFast = kitchen`今天的早餐是\n${dessert}与${drink}`;

function kitchen(strings, ...values){
  // console.log(strings);
  // console.log(values);

  let result = '';

  for(var i = 0; i < values.length; i++){
    result += strings[i];
    result += values[i];
  }
  result += strings[strings.length - 1];

return result;
}


console.log(breakFast);

7.判断字符串是否包含某个其它字符串

7.1 判断字符串是否是某个字符串开头:startsWith('条件字符串')返回值:true,false

'use strict';

let dessert = 'A',
drink = 'B';

let breakFast = 今天的早餐是 \n ${dessert} 与 ${drink};

console.log(
breakFast.startsWith('!')
);

7.2 判断字符串结尾使用:endsWith('条件字符串'),返回值为:true, false

'use strict';

let dessert = 'A',
drink = 'B';

let breakFast = 今天的早餐是 \n ${dessert} 与 ${drink};

console.log(
breakFast.endsWith('?')
);


7.3 包含某个字符串:`includes()`返回值为:true, false

'use strict';

let dessert = 'A',
drink = 'B';

let breakFast = 今天的早餐是 \n ${dessert} 与 ${drink}!;

console.log(
breakFast.includes('!')
);

8. 默认参数

'use strict';

function breakFast (dessert = 'AA', drink = 'BB'){
  return `${dessert} ${drink}`;
}

console.log(
  breakFast('CC','DD')
);

9.展开操作符:Spread: ...

有点类似数组的拼接

'use strict';

let fruits = ['AA','BB'],
    foods = ['CC',...fruits];
console.log(fruits);
console.log(...fruits);
console.log(foods);

10.剩余操作符:Rest

'use strict';

function breakFast (dessert, drink, ...foods){
  console.log(dessert, drink, foods);//输出带有数组的信息
  // console.log(dessert, drink, ...foods);//输出所有的内容,不带数组
}

breakFast('PP','NN','MM', 'ZZ');

11.解构参数:Destrucred Parameters

第三参数:可以是对象

'use strict';

function breakFast (dessert, drink, {location, restaurant}){
  console.log(dessert, drink, location, restaurant);
}

breakFast('AA', 'BB', {location: '同东', restaurant: '小明'})

12.函数的名字:name属性

'use strict';

function breakFast(argument){

}

console.log(
  breakFast.name
);
'use strict';

let breakfast = function superBreakfast (argument){

}

console.log(
  breakfast.name
);

13.箭头函数

'use strict';

//左边的变量可以作为函数的名字,右边是函数可以接收的参数; desset(参数) => desserts(函数的返回值)
let breakfast = (dessert, drink) => dessert + drink;

14.对象表达式

方式一:

'use strict';

let dessert = 'AA', drink = 'BB';

let food = {
  dessert: dessert,
  drink: drink,
};

console.log(food);

方式二:

'use strict';

let dessert = 'AA', drink = 'BB';

let food = {
  dessert,
  drink,
};

console.log(food);

方式三:

'use strict';

let dessert = 'AA', drink = 'BB';

let food = {
  dessert,
  drink,
  breakfast(){}
};

console.log(food);

15.对象属性名

15.1 属性中不能包括:空格

'use strict';

let food = {};

food.dessert = 'BB';
food.hot drink = 'CC';

console.log(food);

15.2 添加带空格的属性名字:

'use strict';

let food = {};

food.dessert = 'BB';
// food.hot drink = 'CC';//这句话是错误的

food[`hot drink`] = 'CC';

console.log(food);

'use strict';

let food = {};
let drinks = `hot drinks`;
food.dessert = 'BB';
// food.hot drink = 'CC';//这句话是错误的

// food[`hot drink`] = 'CC';
food[drinks] = 'CC';
console.log(food);

16.对比两个值是否相等:Object.is(a,b)两个参数就是需要对比的东西

17.把一个对象的值复制到另一个对象里:Object.assign()

'use strict';

let breakfast = {};

Object.assign(
  breakfast,//需要复制到的对象
  {drink: 'AA'}//需要复制对象的内容
);

console.log(breakfast);

18 设置对象的prototype: Object.setPrototypeOf()

创建对象以后去改变prototype

'use strict';

let breakfast = {
  getDrink() {
    return 'AAA';
  }
};

let dinner = {
  getDrink(){
    return 'BBB';
  }
};

let sunday = Object.create(breakfast);

console.log(sunday.getDrink());
console.log(Object.getPrototypeOf(sunday) == breakfast);

// Object.setPrototypeOf(需要设置的这个对象,设置成的对象)
Object.setPrototypeOf(sunday, dinner);

console.log(sunday.getDrink());

console.log(Object.getPrototypeOf(sunday) == dinner);

19.__proto__

'use strict';

let breakfast = {
  getDrink() {
    return 'AAA';
  }
};

let dinner = {
  getDrink(){
    return 'BBB';
  }
};

let sunday = {
  __proto__: breakfast
};

console.log(sunday.getDrink());

console.log(Object.getPrototypeOf(sunday) == breakfast);

sunday.__proto__ = dinner;

console.log(sunday.getDrink());
console.log(Object.getPrototypeOf(sunday) == dinner);

20.super

'use strict';

let breakfast = {
  getDrink() {
    return 'AAA';
  }
};

let dinner = {
  getDrink(){
    return 'BBB';
  }
};

let sunday = {
  __proto__: breakfast,
  getDrinkP(){
    return super.getDrink() + `marlonxlj`;
  }
};

console.log(sunday.getDrinkP());

21.迭代器:Itertors

返回一个对象{value: xx, done: true/false}
还有一个next方法
生成迭代器:Generators

'use strict';

function chef(foods){
  let i = 0;

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

      return {
        value: value,
        done: done
      }
    }
  }
}

let marlonxlj = chef(['AA', 'BB']);

console.log(marlonxlj.next());

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

22.生成器:Generators

'use strict';

//生成器的名字
// function* chef(){
//   yield 'AA';
//   yield 'BB';
// }

//带参数
// function* chef(foods){
//   for(var i = 0; i < foods.length; i++){
//     yield foods[i];
//   }
// }

//使用函数表达式
let chef = function* (foods){
  for(var i = 0; i < foods.length; i++){
    yield foods[i];
  }
}

//生成迭代器
let marlonxlj = chef(['AA', 'BB', 'CC']);

console.log(marlonxlj.next());
console.log(marlonxlj.next());
console.log(marlonxlj.next());
console.log(marlonxlj.next());

23.类:Class

'use strict';

class Chef {
  constructor(food){
    this.food = food;
  }

  cook() {
    console.log(this.food);
  }
}

let marlonxlj = new Chef('marlonxljPP');

marlonxlj.cook()

24.get与set

'use strict';

class Chef {
  constructor(food){
    this.food = food;
    this.dish = [];
  }

  get menu(){
    return this.dish;
  }

  set menu(dish){
    this.dish.push(dish);
  }
  cook() {
    console.log(this.food);
  }
}

let marlonxlj = new Chef();

console.log(marlonxlj.menu = 'Hello');
console.log(marlonxlj.menu = 'world');
console.log(marlonxlj.menu);

25.静态方法:static

'use strict';

class Chef {
  constructor(food){
    this.food = food;
    this.dish = [];
  }

  get menu(){
    return this.dish;
  }

  set menu(dish){
    this.dish.push(dish);
  }
//修改cook方法
  static cook(food) {
    console.log(food);
  }
}

Chef.cook('marlonxlj');

26.继承:extends

'use strict';

class Person {
  constructor(name, birthday){
    this.name = name;
    this.birthday = birthday;
  }

  intro() {
    return `${this.name}, ${this.birthday}`;
  }
}

class Chef extends Person {
  constructor (name, birthday) {
    super(name, birthday);
  }
}

//创建一个类
let marlonxlj = new Chef('marlonxlj', '2014');

console.log(marlonxlj.intro());

27. Set 里面不能有重复的内容

'use strict';

let dessets = new Set('ABVX');

dessets.add('marlonxlj');
dessets.add('A');

console.log(dessets);
//查看有多少个元素
console.log(dessets.size);
//查看是不是有这个‘marlonxlj’
console.log(dessets.has('marlonxlj'));
//删除marlonxlj
dessets.delete('marlonxlj');

console.log(dessets);

//循环处理
dessets.forEach(dessets => {
  console.log(dessets);
});

//清除
dessets.clear();
console.log(dessets);

29.map

'use strict';

let food = new Map();

let fruit = {}, cook = function() {}, dessert = 'marlonxlj';

//往map里面添加map的key
//2个参数:第一个是:key,项目的名字;第二个是value:
food.set(fruit, 'AA');
food.set(cook, 'BB');
food.set(dessert, 'CC');

console.log(food);
//项目里面有多个
console.log(food.size);
//得到它的值
console.log(food.get(cook));
//删除map里面的项目
food.delete(dessert)
//判断是否包含这个derrsert
console.log(food.has(dessert));


//循环处理map里面的东西
food.forEach((value, key) => {
  console.log(`${key} = ${value}`);
});

//清除
food.clear();
console.log(food);

30.重命名导出导入的东西

script.js

'use strict';

import {fruit, dessert, super as dinner} from './chef.js';//但是在运行是这句话总是有错???求解啊

console.log(chef.fruit, chef.dessert);

chef.js

'use strict';

let fruit = 'AA';
let dessert = 'BB';

function dinner(fruit, dessert){
  console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`);
}

export {fruit, dessert, dinner as upper};

31.默认导出与导入

chef.js

'use strict';

let fruit = 'AA';
let dessert = 'BB';

//export default默认要导出的模块
//一种写法
// export default function dinner(fruit, dessert){
//   console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`);
// }
//
// 另一种写法
 function dinner(fruit, dessert){
  console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`);
}

export {dinner as default};

script.js

'use strict';

// import {fruit, dessert, super as dinner} from './chef.js';
import dinner from './chef.js'

// inclode [fruit, dessert, super as dinner] from './chef.js';

dinner('AA','BB');

🐼🐶🐶如果对你有帮助,或觉得可以。请右上角star一下,这是对我一种鼓励,让我知道我写的东西有人认可,我才会后续不断的进行完善。

有任何问题或建议请及时issues me,以便我能更快的进行更新修复。

Email: marlonxlj@163.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容