ES6
ES6新特性-let&const
-
使用const表示常量(声明之后不允许改变,一旦声明必须初始化,否则会报错)
const b=2;
b=3;
console.log(b);
-
使用var声明的变量往往会越域,而let声明的变量有严格的局部作用域
{
var a=1;
let c=3;
}
console.log(a);
console.log(c);
var a=1
var a=3
let b=2
let b=4
console.log(a)
console.log(b)
-
let不会变量提升,变量提升的意思是可以先使用变量,再声明
console.log(a)
var a =1
console.log(b)
let b =2
ES6新特性-解构&字符串
let arr=[1,2,3];
let a=arr[0];
let b=arr[1];
let c=arr[2];
console.info(a,b,c);
let[aa,bb,cc]=arr;
console.info(aa,bb,cc);
let person={
name:'徐庶',
age:11,
hobbies:['唱歌','跳舞']
}
let name=person.name;
console.info(name)
let{name,age,hobbies}=person;
console.info(name,age,hobbies);
let html="<div>"+"<a>你好</a>"+"</div>";
let esHtml=`<div><a>你好</a></div>`;
console.info(esHtml);
let str="hello.vue";
console.log(str.startsWith("hello"))
console.log(str.endsWith(".vue"))
console.log(str.includes("e"))
console.log(str.includes("hello"))
-
字符串插入变量和表达式,变量名可以写在
,
{},
,{}中可以放入js表达式
let person={
name:'徐庶',
age:11,
hobbies:['唱歌','跳舞']
}
let{name,age,hobbies}=person;
function fun(){
return "这是一个函数"
}
console.info(`名字是${name},年龄是${age},爱好是${hobbies},这个函数的返回值是${fun()}`);
ES6新特性-函数优化
function add(a){
if(!a){
a=1;
}
console.log(a);
}
add();
function add(a=1){
console.info(a);
}
add();
function add(a){
console.info(a);
}
add([1,2]);
function add(...a){
console.log(a);
}
add(1,2,3);
let nums={
a:1,
b:2
}
function add({a,b}){
console.log(a+b);
}
add(nums);
-
箭头函数:单行的时候更简洁,不需要return,多行的时候需要。
function add(a,b){
return a+b;
}
console.info(add(1,2));
let add=(a,b)=>{
let c=a+b
console.log(c);
}
add(2,2);
ES6新特征-对象优化
-
对象的内置函数
- keys()显示对象的属性
- values()显示属性的值
- entries()显示对象的属性和值
- 对象合并函数assign()
- 说明:第一个参数是需要合并的对象 其他参数会合并到第一个参数上面(如果有相同的后来者居上)
let person = {
name: "jack",
age: 21,
language: ['java', 'js', 'css']
}
console.log(Object.keys(person));
console.log(Object.values(person));
console.log(Object.entries(person));
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { a:4,c: 3 };
Object.assign(target, source1, source2);
console.log(target);
-
声明对象简写
-
对象属性的简写:属性名和引用的变量名是相同的就可以省略赋值 let name="徐庶";
let age=11;
let person={
name:name,
age:age
}
let person={
name,
age
}
console.info(person)
-
对象中函数的简写:使用箭头函数声明,如果要调用本对象的属性this会失效,需要使用对象.属性的方式
let person={
name:"徐庶",
eat: function(food){
console.info(this.name+"吃了:"+food)
},
eat2: (food) => console.info(person.name+"吃了:"+food),
eat3(food){
console.info(this.name+"吃了:"+food)
}
}
person.eat("米饭");
person.eat2("海鲜");
person.eat3("水果");
-
对象扩展运算符:拷贝与合并(…)
let person={name:"xushu",age:18,wife:{name:"杨迪"}};
let person2={...person};
console.info(person2);
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
let newObject={...target,... source1,...source2};
console.info(newObject);
ES6新特性-promise异步编排
-
使用ES之前的ajax请求方式:
function myAjax(url, callback){
$.ajax({
url: url,
success: function (result) {
callback(result);
}
});
}
myAjax("http://localhost:8811/user/existUsername",function(result){
if(result.data){
myAjax("http://localhost:8811/user/existPhone",function(result){
})
}
})
用户名是否存在
$.ajax({
url: "http://localhost:8811/user/existUsername",
success: function (result) {
if (result.data) {
alert('用户名不存在!')
$.ajax({
url: "http://localhost:8811/user/existPhone",
success: function (result) {
if (result.data) {
alert('手机不存在!')
$.ajax({
url:"http://localhost:8811/user/registryUser",
success: function (result) {
if (result.data) {
alert(result.message)
}
},
error: function (err) {
alert("异常" + err)
}
})
} else {
alert(result.message)
}
},
error: function (err) {
alert("异常" + err)
}
})
} else {
alert(result.message)
}
},
error: function (err) {
alert("异常" + err)
}
})
-
promise异步编排:
- 当执行到resolve函数时,会调用.then()判断result
- 当执行到reject函数时,会调用.catch()判断err
new Promise((resolve, reject) => {
$.ajax({
url: "http://localhost:8811/user/existUsername",
success: function (result) {
resolve(result);
},
error: function (err) {
reject(err);
}
})
})
.then(result => {
return new Promise((resolve, reject) => {
if (result.data) {
alert('用户名不存在!')
$.ajax({
url: "http://localhost:8811/user/existPhone",
success: function (result) {
resolve(result);
},
error: function (err) {
reject(err);
}
})
} else {
alert(result.message)
}
})
})
.then(result => {
return new Promise((resolve, reject) => {
if (result.data) {
alert('手机不存在!')
$.ajax({
url: "http://localhost:8811/user/registryUser",
success: function (result) {
resolve(result);
},
error: function (err) {
alert("异常" + err)
}
})
} else {
alert(result.message)
}
});
})
.then(result => {
if (result.data) {
alert(result.message)
}
})
.catch(err => {
alert('服务器异常')
});
function myAjax(url) {
return new Promise((resolve, reject) => {
$.ajax({
url,
success(result) {
resolve(result);
},
error(err) {
reject(err);
}
})
})
}
myAjax("http://localhost:8811/user/existUsername")
.then(result => {
if (result.data) {
alert('用户名不存在!');
return myAjax("http://localhost:8811/user/existPhone")
} else {
alert(result.message)
}
})
.then(result => {
if (result.data) {
alert('手机号不存在!');
return myAjax("http://localhost:8811/user/registryUser")
} else {
alert(result.message)
}
})
.then(result => {
if (result.data) {
alert(result.message)
}
})
.catch(err => {
alert('服务器异常')
});
ES6新特性-模块化
export default {
username:'徐庶',
age:'18',
print() {
console.info(`姓名${this.username},年龄:${this.age}`)
}
}
let girl ={
realName:'迪丽热巴',
cup:'E'
}
export {girl}
|