目录
一.let变量
1.块级作用域
let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
2.变量不允许重复声明
let不允许在相同作用域内,重复声明同一个变量。但可以在不同作用域内声明同一个变量,依然只在let命令所在的代码块内有效.
3.不存在变量提升
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。 let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
4.不影响作用域链
let a=1;
function b(){
console.log(a);
}
b();//1
二.箭头函数
简介:
ES6中允许使用=>来定义函数。箭头函相当于匿名函数,并简化了函数定义。
语法:
箭头函数在语法上比普通函数简洁多。箭头函数就是采用箭头=>来定义函数,省去关键字function。
函数的参数放在=>前面的括号中,函数体跟在=>后的花括号中
//声明函数
let fn = (a,b)=>{
return a + b;
}
// 等同于
let fn = function (a,b) {
return a + b;
}
//调用函数
let result = fn(1,2);
console.log(result);//3
用法:
1.箭头函数this是静态的,始终指向函数声明时所在作用域下的this的值
function getName(){
console.log(this.name);
}
let getName2 = () =>{
console.log(this.name);
}
//设置window对象的name属性
window.name = '梦想家';
const school = {
name:'ATGUIGU'
}
//直接调用
getName();//梦想家
getName2();//梦想家
//call方法调用
getName.call(school);//ATGUIGU
getName2.call(school);//梦想家
2.箭头函数大括号小括号的省略
//当形参有且只有一个的时候,可省略小括号
let add = n =>{
return n+n;
}
console.log(add(9));
//当代码体只有一条语句的时候,可省略大括号,此时return必须省略
//且语句的执行结果就是函数的返回值
let pow = n =>n*n;
console.log(pow(6));
3.不能作为构造函数实例化对象
let Person = (name,age) => {
this.name = name;
this.age = gae;
}
let me = new Person('xiao',30);
console.log(me);//报错
三.解构赋值
简介:
解构赋值:允许按照一定模式从数组和对象中提取值,对变量进行赋值
数组的解构:
const F4 = ['小沈阳','刘能','赵四','宋小宝'];
let [xiao,liu,zhao,song]=F4;
console.log(xiao);//小沈阳
console.log(liu);//刘能
console.log(zhao);//赵四
console.log(song);//宋小宝
对象的解构:
const zhao = {
name:'赵本山',
age:'70',
xiaopin: function(){
console.log('我可以演小品');
}
}
// let {name,age,xiaopin} = zhao;
// console.log(name);
// console.log(age);
// console.log(xiaopin);
let {xiaopin} = zhao;
xiaopin();//我可以演小品
四.` ` 引用字符串
格式:
let str = `啦啦啦~`;
console.log(str, typeof str);//啦啦啦~ string
内容中可以直接出现换行符
' ' " "声明的字符串换行时要用引号和加号连接,否则会报错,而` `声明的字符串可直接换行
let str=`<ul>
<li>沈腾</li>
<li>玛丽</li>
<li>贾玲</li>
</ul>`;
变量拼接
' ' " "声明的字符串变量拼接方式:
let lovest= 'TFBOYS';
let out = lovest + '是我心目中最优秀的组合';
console.log(out);//TFBOYS是我心目中最优秀的组合
` `声明的字符串变量拼接方式:
let lovest= `TFBOYS`;
let out = `${lovest}是我心目中最优秀的组合`;