ES6的总结一

ECMAScript 6.0(2015年)

es6核心知识
  1. 变量上的变化 let/const
    babel可以编译成var的形式
  2. 不允许重复定义变量
var num=0;   var num=20; console.log(num);//var可以重复定义
let num=0;  let num=20;    console.log(num);//此处报错
  1. 不存在变量提升,
 console.log(b); // 变量声明提升
        var b = 20;
 <input type="button" value="按我" />
    <script>
        /*
          es6类没有变量提升 所以必须先定义类 后实例化对象
        */
        var _this;
        class Student {
            constructor(sname) {
                _this = this;
                this.sname = sname;
                //this.study();
                this.btn = document.querySelector('input');
                this.btn.onclick = this.study.bind(this);
            }
            study() {
                console.log(this.sname + 'work hard');
            }
        }
        let s1 = new Student('jack');
        s1.study();
        console.log(_this === s1);
    </script>
  1. 支持块级作用域
if(10>5) {
            let c = 20; // 只能在当前块级作用域下有效
            console.log(c);
        }
        //console.log(c); // c is not defined 
if(true) {
            var c = 20; // 不支持块级作用域
        }
        console.log(c);
  1. const用于定义常量
const PI=3.141592653 
PI=2;不能修改
const PI;必须初始化
const obj={a:10,b:20};
obj.a=12;
console.log(obj);//可以修改不可以重新赋值
闭包
<script>
    /* 全局作用域 局部作用域
    var num = 10;
    function f() {
        var num2 = 20; // 函数内定义的变量 局部变量
        console.log(num);
        console.log(num2);    
    }
    f();
    console.log(num2);
    */
  // 闭包 有权利访问另外一个函数作用域中的变量的函数
    // fun闭包函数 fun2闭包
    function fun() {
        var a = 10;
        function fun2() {
            console.log(a);
        }
        //fun2();
        return fun2;
    }
    var f = fun();
    f(); // 闭包可以延伸变量作用范围
    
</script>
{
    var i=10; //解决用闭包,自执行
}

console.log(i);
{
    let i=10;
}

console.log(i); 报错
//结果为3
for(var i=0;i<3;i++){
    setTimeout(function(){
        console.log(i);
    });
}
闭包
for(var i=0;i<3;i++){
    (function(i){
        setTimeout(function(){
            console.log(i);
        });
    })(i);
    
}

var arr=[];
for(var i=0;i<2;i++){
    arr[i]=function(){
        console.log(i);
    }
}
arr[0]();
arr[1]();//2

单击li 打印每个li的序号

<ul class="nav">
        <li>北京</li>
        <li>上海</li>
        <li>深圳</li>
    </ul>

1 )思路一 动态添加属性

<script>
       var lis = document.querySelector('ul.nav').querySelectorAll('li');
        //思路一 动态添加属性
     for(var i = 0; i < lis.length; i++) {
            lis[i].index = i;
            lis[i].onclick = function() {
                console.log(this.index);
            }
        } 

2)思路二闭包

 // 思路二闭包
        for(var i = 0; i < lis.length; i++) {
            (function(i) {
                lis[i].onclick = function() {
                   console.log(i);
                } 
            })(i);
        } 

3) es6 let

 for(let i = 0; i < lis.length; i++) {   
        lis[i].onclick = function() {
            console.log(i);
        } 
    } 
     3秒后 打印每个城市
        for(var i = 0; i < lis.length; i++) {
            // 闭包
            (function(i) {
                setTimeout(function() {
                    console.log(lis[i].innerHTML);
                },3000);
            })(i);  
        }
// 滴滴打车 3公里以内 14 每增加1公里收5元
        // 堵车 在原来收费上多收5元
        var c = (function() {
            var base = 14;
            var sum = 0;
            return {
                normal: function(n) {
                    if (n <= 3) {
                        sum = base;
                    } else {
                        sum = base + (n - 3) * 5;
                    }
                    return sum;
                },
                yj: function(flag) {
                    return flag ? sum + 5 : sum
                }
            }
        })();
        c.normal(5);
        console.log(c.yj(false));

解构赋值

let [a, b, c] = [10, 20, 30];
console.log(a, b, c);
let [{ name }, { hobby }] = [{ id: 1, name: 'zs', age: 23 }, { id: 2, name: 'lisi', hobby: ['sleeping', 'eating'] }];
console.log(name);
console.log(hobby);

解构重命名

let { name: userName } = { name: 'along', age: 33 };
console.log(userName);

省略解构

let [, , c] = [10, 20, 30];
console.log(c);

默认解构
age没有赋值的话,默认为8

let { name, age = 8 } = { name: 'zs', age: 12 }
console.log(name, age);

默认赋值解构更清晰

function ajax(options) {
    var method = options.method || 'get';
}

function ajax({ method = 'get', data }) {
    var method = options.method || 'get';
}

ajax({
    method: 'post',
    data: {
        "a": 10,
        "b": 20
    }
})

es6字符串的变化

let name = 'n1';
let age = 30;
let str = 'My name is ${name}, I am ${age}';
str = str.replace(/\$\{([^}]*)\}/g, function() {
    console.log(arguments);
    return eval(arguments[1]); // eval('name')
});
console.log(str);
// 模版字符串换行
let name = 'n1';
let age = 30;
let userInfo = [name, age];
let lis = userInfo.map(function(item) {
    return `<li>${item}</li>`;
})
let ul = `
  <ul>
     ${lis.join('')}
  </ul>`;
console.log(ul);
// 模版标签
let name = 'n1';
let age = 30;

function tag(strs) {
    console.log(strs);
    console.log(arguments);
    let values = Array.prototype.slice.call(arguments, 1);
    console.log(values);
    let res = '';
    for (let key in values) {
        res += strs[key] + values[key].toString().toUpperCase();
    }
    res += strs[strs.length - 1];
    return res;
}
let str = tag `My name is ${name}, I am ${age}`;
console.log(str);
// 新增常用api
console.log('http://www.baidu.com'.startsWith('http'));
console.log('1.jpg'.endsWith('png'));
console.log('welcometobeijing'.includes('to'));
console.log('hi'.repeat(10));
console.log('0'.padEnd(8, 5));

严格模式

 'use strict';
        // if(true) {
        //     function fun() {
        //         console.log(123);
        //     }
        // }
        // fun()
        function fun() {
            function fun2() {
                
            }
        }
        /*
          正常模式
          严格模式 在严格的条件下执行js代码 ie10以上
        */
        /*
        function fn() {
            'use strict';
            num = 10; 
        }
        fn();
        console.log(num);
        */
        /*
        var num = 20;
        delete num; // 删除已经声明的变量
        console.log(num);
        */
        // Cannot delete unqualified property 'num' in strict mode.
         
        //  function fn() {
        //      console.log(this);
        //  }
        //  fn(1,2);
        //  function Student(name) {
        //      this.name = name;
        //  }
         //Student('zs');
        //  setInterval(function(){
        //      console.log(this); 
        //  }, 1000);
        function fn(num1,num2) {
            console.log(num1+num2);  
        }
        fn(2,3);
        /*
          严格模式一些变化
          1 严格模式禁止变量没有声明就赋值 变量必须先定义后赋值
          2 禁止删除已经声明的变量
          3 严格模式下 全局作用域中函数this是undefined
            构造函数不加new this会报错
          4 严格模式下 参数名不能重复 
          5 不允许在非函数代码块中定义函数 
        */
    </script>

高阶函数

 <script>
        // 高阶函数 函数的参数是函数或者返回值是函数
        // animate(obj,500,function(){})
        function fn() {
            return function() {
                console.log(123);
            }
        }
        // var newFn = fn();
        // newFn();

        fn()();
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的海滨体育馆管理系统,源码+数据库+毕业论文+视频演示 本基于Spring Boot的海滨体育馆管理系统设计目标是实现海滨体育馆的信息化管理,提高管理效率,使得海滨体育馆管理工作规范化、高效化。 本文重点阐述了海滨体育馆管理系统的开发过程,以实际运用为开发背景,基于Spring Boot框架,运用了Java技术和MySQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了海滨体育馆相关信息管理的重要功能。 本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高海滨体育馆管理效率。 关键词:海滨体育馆管理,Java技术,MySQL数据库,Spring Boot框架 本基于Spring Boot的海滨体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分,这两大功能模块分别实现的功能如下: (1)管理员功能模块 管理员登录后可对系统进行全面管理操作,包括个人中心、学生管理、器材管理、器材借出管理、器材归还管理、器材分类管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理、灯光保修管理、体育论坛以及系统管理。 (2)学生功能模块 学生在系统前台可查看系统信息,包括首页、器材、体育论坛以及体育资讯等,没有账号的学生可进行注册操作,注册登录后主要功能模块包括个人中心、器材管理、器材借出管理、器材归还管理、校队签到管理、进入登记管理、离开登记管理、活动预约管理。
毕业设计,基于SpringBoot+Vue+MySQL开发的学科竞赛管理系统,源码+数据库+毕业论文+视频演示 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。 本学科竞赛管理系统以实际运用为开发背景,基于Spring Boot框架、Vue框架,运用了Java语言和MySQL数据库进行开发设计,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了学科竞赛管理的重要功能。 本学科竞赛管理系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的学科竞赛管理平台。 关键词:学科竞赛管理,Java语言,MySQL数据库,Vue框架 此学科竞赛管理系统的设计与实现功能分析主要分为管理员功能模块和学生功能模块两大模块,下面详细介绍这两大模块的主要功能: (1)管理员:管理员登陆后可对系统进行全面管理,管理员主要功能模块包括个人中心、学生管理、教师管理、赛项信息管理、赛项报名管理、奖项统计管理、管理员管理以及系统管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。 (2)学生:学生进入本学科竞赛管理系统的设计与实现前台可查看系统信息,包括首页、赛项信息以及新闻资讯等,注册登录后主要功能模块包括个人中心和赛项报名管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值