一.ECMAScript和JavaScript的关系

ECMA介绍

  1. ECMA:全称European Computer Manufacturers Association。简称ECMA或ES(ES6)
  2. ECMAScript ≈ JS
  3. 用ES6的意义:
    • 对语法的改进,功能的增加
    • 使用Vue、React、小程序、Nodejs等都在用
    • ES6以上版本再等等

1.1 let 和 const 命令

  1. var与let命令、const命令区别

    • var 可以重复声明, let 不能。
    • var 没有块级作用域。块级作用域: {} 、 if() {}、 for() {}
    • var只有在function(){} 中有作用域。
    • var会发所有声明提升,但let不会
  2. let与const的区别

  • let用于声明变量。
  • const用于声明常量,一旦声明无法更改,而且声明时必须给值。但对象中的成员可以改变。

1.2 箭头函数 =>

  1. 实例

    1. 代码1
    2. function add(a,b){
    3. return a+b;}
    4. console.log(add(3,4));

    结果:7

    1. 代码2
    2. const add = (a,b) => a+b;

    结果:7
    代码2 = 代码1。

  2. 使用细节

    • 如果没有参数,或有多个参数用小括号()
    • 只有一个参数可以不用小括号()
    • 如果只有一条语句可以不使用大括号{}和return语句。
    • 箭头函数=>没有自己this,用的this是继承过来的,默认指向在定义时的对象。

1.3 数组中常用方法

  1. filter过滤器
  2. map 映射
  3. reduce 汇总
    . 例子:有一个商品列表:
    1. 将大于10元的商品打折, 取出大于10元的商品
    2. 将10元以上的商品打5折
    3. 打完折的商品总价是多少
  1. 方法1写法:
  2. let goods = [30, 80, 50, 5, 3, 1, 60, 9];
  3. //取出大于10元的商品
  4. let goods1 = [];
  5. for(let n of goods) {
  6. if(n>=10)
  7. goods1.push(n);
  8. }
  9. console.log(goods1);
  10. let goods2 = [];
  11. for(let n of goods1) {
  12. goods2.push(n*0.5);
  13. }
  14. console.log(goods2);
  15. let sum = 0;
  16. for(let n of goods2) {
  17. sum += n;
  18. }
  19. console.log(sum);
  20. 方法2写法:
  21. let goods = [30, 80, 50, 5, 3, 1, 60, 9];
  22. let goods1 = goods.filter(function(n) {
  23. return n >= 10;
  24. })
  25. console.log(goods1);
  26. let goods2 = goods1.map(function(n) {
  27. return n*0.5;
  28. })
  29. console.log(goods2);
  30. let sum = goods2.reduce(function(s, n){
  31. return s+n;
  32. }, 0);
  33. console.log(sum);
  34. 方法3写法:
  35. /*
  36. 第一次,s 参数是 0 , n 是数组中的第一个元素 15
  37. 第二次,s 参数是 是第一次回调函数返回值 , n 是数组中的第二个元素 40
  38. 第三次,s 参数是 是第二次回调函数返回值 , n 是数组中的第三个元素 25
  39. 第四次,s 参数是 是上一次回调函数返回值 , n 是数组中的第二个元素 30
  40. */
  41. let goods = [30, 80, 50, 5, 3, 1, 60, 9];
  42. let sum = goods.filter(n => n >= 10).map(n => n*0.5).reduce((s, n)=>s+n);
  43. console.log(sum);

1.4 模板字符串

1.模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

  1. let title = "学习猿地";
  2. let slogen = "成就自己的只需要一套精品";
  3. let jsx = `
  4. <h1>${title}</h1>
  5. <b>lmonkey</b>
  6. <div><i>${slogen}</i></div>`;
  7. console.log(jsx);

1.5 解构赋值和扩展运算

  1. 解构赋值
    • 左右两边结构必须一样;右边用数组[],左边也是数组[];右边是对象{},左边也是对象{},并且对象中的名称要对应。
    • 右边必须有值
    • 声明和赋值不能分开
      1. let [a,b,c] = ['one','two','three'];
      2. const {age,sex,say,name} ={name:'aaa',age:30,sex:'nan',say(){return 'aaa'}};
  2. 扩展运算符
    • …三点运算符
    • 展开数组
    • 默认参数
    • 也可展开赋值给函数所有参数
      1. let a = [1,2,3];
      2. let b = [...a,4,5,6,...a];
      1. function demo(...args){
      2. return args;
      3. }
      4. demo(5,4,3,2,1);
      }

1.6 ES6的类

  1. ES 6 的 Class(类)概念,与php一样。

    • constructor 是构造方法
    • this关键字代表实例对象
    • 通过extends关键字实现继承
    • super关键字,表示父类的构造函数,用来新建父类的this对象
  2. JSON对象的新应用

  • JSON.stringify() 串行化
  • JSON.parse() 反串行化
  • 简写
    • (属性和值)名字一样可以简写
    • 方法一样可以简写(:function省)

1.7 模块化编程

  1. export命令:用于规定模块的对外接口,用{}。

    一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。可缺省导出default,一个文件中只能有一个。

  2. import命令:用于输入其他模块提供的功能,用{}。

    import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。

  3. 如果不使用webpack,需要在html文件中使用type=”module”变成模块,使之独立。

二、Axios异步网络请求

完全可以替代ajax,可理解为ajax的封装,Axios是一个基于promise的HTTP库。

  1. 安装axios:http://bootcdn.cn下载axios,并导入js文件。
    在入口文件中用import导入。

  2. 代码

    1. axios('url').then(res=>{console.log(res);
    2. }).catch(err=>{
    3. console.log(err);
    4. });
  3. 入门应用

    • Get方法(默认)
      1. axios({
      2. url:'http://localhost/axios/api.php',
      3. method:'get',
      4. params:{
      5. name:'username',
      6. }
      7. }).then(res=>{
      8. console.log(res);
      9. });
    • POST方法
    1. axios({
    2. method:'post',
    3. url:'http://localhost/axios/api.php',
    4. headers: {'content- type': 'application/x-www- form-urlencoded' },
    5. data:{
    6. name:'username',
    7. age:'30',
    8. sex:'aaa'
    9. }
    10. }).then(res=>{
    11. console.log(res);
    12. });
  4. Axios的请求
    • axios.request(config)
    • axios.get(url[, config])
    • axios.delete(url[, config])
    • axios.head(url[, config])
    • axios.post(url[, data[, config]])
    • axios.put(url[, data[, config]])
    • axios.patch(url[, data[, config]])

5.Axios全局配置
建议配置时必须加,在Axios请求时可以简单化。

  1. axios.defaults.baseURL="http://127.0.0.1";
  2. axios.defaults.timeout=5000;
  3. axios.defaults.headers.post['content-type']='application/x-www-form-urlencoded';

更多相关文章

  1. Python的装饰器原来是这么用的
  2. 你知道 JavaScript Symbol 类型是什么,怎么用吗?
  3. json数据与时间戳
  4. 循环语句 超级全局变量 及 cURL函数
  5. ES6 和异步网络请求
  6. udp数据报从网卡驱动到用户空间流程总结
  7. 关于ptype_all和pypte_base中的pt_prev的说明
  8. Netfliter状态跟踪之动态协议的实现浅析(tftp实现)
  9. 如何正确使用 Python 的 Lambda 函数

随机推荐

  1. Google Android测试工程师:使用Android 进
  2. 如何在Android(安卓)Studio和eclipse中查
  3. Android中对MIME类型的理解
  4. android r cannot be resolved to a vari
  5. Android(安卓)Java包各种功能概览
  6. 更改Android AVD模拟器创建路径位置的方
  7. Android高手进阶教程(十一)之----Android
  8. Android中关于android:imeOptions="actio
  9. Android(安卓)上层应用读写设备节点
  10. Android(安卓)Studio导入SlidingMenu类库