ES6复习

声明变量

可以使用let、const关键字声明变量,而不推荐使用var声明变量
var声明变量的问题:

1.可以多次重复声明同一个变量名,存在覆盖的风险
2.在全局声明的变量会挂在全局对象上
3.var不能形成块级作用域,例如:if、for范围外依然可以使用var声明的变量
4.var声明的变量具备变量提升(hoisting)特性— 允许使用在前,声明在后

var存在很多问题,let横空出世。
let允许创建块级作用域,let声明的变量只在它所在的代码块内有效

{
  let test = 10;
  var foo = 1;
}

console.log(test) // ReferenceError: miaov is not defined.
console.log(foo) // 1

**

**
总结 let和const:
声明的变量不具备变量提升(hoisting)特性
只在声明所在的块级作用域内有效
不允许重复声明
暂时性死区(TDZ)所声明的变量绑定在定义的区域,使用let命令声明变量之前,该变量都是不可用的

const 在声明时必须被赋值值

解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。通过这种方式可以避免在对象赋值时产生中间变量。

数组的结构赋值

function test(){
    return [1,2,3,4];
}

var [a,b] = test();
console.log(a,b); // 1,2

test函数执行后,返回的是一个数组。取数组前两个值分别存在变量中,根据解构赋值的规则,在左侧声明变量,放在中括号中,会把右边数组中的值一一对应赋值给左边的变量。

对象的解构赋值

function test(){
    return {a:1,b:2,c:3};
}

var {a,b} = test();
console.log(a,b); // 1,2

test函数执行后,返回的是一个对象。分别取出对象中属性为a和b的值,根据解构赋值的规则,在左侧声明变量,放在大括号中,变量名要和属性名保持一致。

函数参数的解构赋值

function test({a,b}){
    console.log(a,b);
}

test({a:1,b:2,c:3})

在形参中定义变量,得到实参对象指定的属性。

默认值

可以给变量设置默认值和另声明一个变量

var {a:otherVar,b,d='默认值'} = {a:1,b:2,c:3};
console.log(d); // 默认值
console.log(otherVar); // 1
console.log(a); // Uncaught ReferenceError: a is not defined

使用=给变量赋一个默认值,如果右边对象中没有与之对应的属性,则按默认值来。
使用:重新声明一个变量,会把匹配到的a的值赋给新的变量otherVar,此时在外面使用时候,不能使用a。

也可以连着一起使用:

var {a,b,d:foo='默认值'} = {a:1,b:2,c:3};
console.log(foo); // '默认值'

模板字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识。
定义字符串

var str = `<li>
    hello
</li>`

在模板字符串中拼写HTML结构,无需考虑回车换行。
在模板字符串中要渲染某个变量的值,可以写在占位符${}中

var message = 'hello';
var str = `<li>
        ${message}
    </li>`

打印出:

"<li>
    hello
</li>"

${}中可以写入任意的表达式(表达式是可以被求值的代码),例如:

var message = 'hello';
var str = `<li>
        ${message}
        ${1+1}
        ${1 > 2 ? true : false}
        ${
            [1,2,3].map(function(item){
                return item*2
            })
        }
    </li>`

但不能在${}中写入if和for这样的语句。

箭头函数(Arrow Functions)

在ES6中,箭头函数就是函数的一种简写形式,允许使用“箭头”(=>)定义函数。
之前声明函数:

function foo(){
    return 1;
}

改造为箭头函数:

let foo = () => 1;

上面使用“箭头”(=>)定义的函数,左侧的()包裹函数的形参,如果定义的函数没有形参或者多个形参,一定要使用括号:
// 没有参数,要使用()

let test = () => 1;

// 多个参数,要使用()
let foo = (a,b) => a + b;
let bar = (a,b,c) => a + b + c;

如果形参只有一个,可以省略括号:

let foo = a => a;

“箭头”(=>)的右侧是函数体代码,会在函数执行后作为函数的返回值,不需要显示的使用return

let foo = (a,b) => a + b;
console.log(foo(1,2)); // 3

以上的简写方式,使代码变得非常简洁,忍不住再来个例子:

let arr = [1,2,3];  
let newArr = arr.map(item => item * 2);
console.log(newArr); // [2,4,6]

有多行代码,可以写在一对{}中,手动调用return返回值:

let foo = (a,b) => {
    console.log(a)
    console.log(b)
    return a + b; 
}

当要返回的是对象时,又不想手动调用return,记得加上()保证是一个对象整体,而不被误以为是函数体:

var obj = () => ({a:1,b:2})
console.log(obj());  // {a:1,b:2}

箭头函数中this指向

箭头函数内的this,绑定定义时所在的作用域的this,并不是在调用时候决定this的指向。

document.onclick = function (){
    setTimeout(function (){
        console.log(this); // 定时器执行的函数,在非严格模式下this指向window    
    },1000)    
}

如果

要在setTimeout中使用点击时的元素,通常需要存一个变量。

document.onclick = function (){
    var that = this;
    setTimeout(function (){
        console.log(that); // that变量存的就是触发事件的元素
    },1000)    
}

如果使用箭头函数,一切讲变得非常简单:

document.onclick = function (){
    setTimeout( () => {
        console.log(this); 
    },1000)    
}    

箭头

函数是在事件处理函数中定义,事件处理函数this指向的是触发事件的元素,所以这个this,也就是触发事件的元素。
使用箭头函数的特性:

1.函数体内的this值,绑定定义时所在的作用域的this
2.不可以当作构造函数
3.不可以使用arguments对象

对象扩展运算符

扩展运算符(…)用于取出参数对象的所有可遍历属性,拷贝到当前对象中,相当于浅复制。

var arr = {a:1,b:2,c:3};
console.log({...arr});

利用对象的属性是唯一的特性,后面定义的覆盖前面的属性,可以修改一个属性的值:

        
var arr = {a:1,b:2,c:3};
console.log({...arr,a:'修改了'});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值