let用来代替var
相同点都是用来声明变量
不同点
1.let 命令不存在变量提升,用变量前先定义,提高代码可读性
2.ES6块级作用域,以往只有全局作用域和函数作用域,不会污染变量
3.不可被重复定义
基于以上3条,定义变量使用let更规范
const命令,用来定义常量 ===final 一旦被定义不能被改变
引用类型的话,地址不可变,值可变
代码示例:
<script type="text/javascript">
//let用来代替var
//相同点都是用来声明变量
//不同点1.let 命令不存在变量提升,用变量前先定义,提高代码可读性
console.log("foo",foo);
var foo=2;//underfined
let foo2=2;
console.log("foo2",foo2);
//2.ES6块级作用域,以往只有全局作用域和函数作用域,不会污染变量
var a=30;
{
var a=10;
let b=20;
}
console.log("a",a);
// console.log("b",b);
//3.不可被重复定义
var a=2;
var a=3.5;
var a="var可重复设置,最后一个a生效";
console.log("a",a);
let b=3.5;
console.log("b",b);
//基于以上3条,定义变量使用let更规范
//const命令,用来定义常量 ===final 一旦被定义不能被改变
const PI=3.1415926;
console.log("PI",PI);
//引用类型的话,地址不可变,值可变
</script>
模板字符串:
模板字符串,是一种优化功能(改善性功能)
以往拼串用+麻烦,用模板字符串是为了简化拼串( ` ` )
let user ={
name:"duidui",
sex:"man",
birthday:"2020-20-20"
}
let usrstr=`性别为:${user.sex}`;
console.log(usrstr);
rest注意事项
1. 固定参数和rest参数可以混合写
2.rest参数必须放到最后一个参数位置,否则会抛rest parameter must be 异常
代码示例:
function add(...args){
console.log(args);
let sum=0;
for (var i = 0; i < args.length; i++) {
sum+=args[i];
}
return sum;
}
let relust=add(2,3);
let relust2=add(2,3,4,5,6);
console.log(`第一个结果为${relust},第二个结果为${relust2}`);
箭头函数:
let name="外部obj";
let obj={
name:"内部",
//普通函数写法
fun1:function(){
console.log("fun1",this);
},
//箭头函数写法
fun2:()=>{
//箭头函数没有自己的作用域,利用这一点,方便访问到外部对象
console.log("fun2",this);
}
}
//函数调用
obj.fun1();
obj.fun2();