一、let和const
块级作用域的诞生,也催生了另外两个定义变量的方法:let,const
let:定义一个变量,允许被改变,只作用于被定义时的作用域下
const:定义一个变量,不允许被改变,只作用于被定义时的作用域下
var:定义一个变量,允许被改变,作用于全局作用域
例如:点击每个按钮,运行结果总是3
<button>1</button>
<button>2</button>
<button>3</button>
<script type="text/javascript">
var btn=document.getElementsByTagName('button');
for(var i=0;i<btn.length;i++){
btn[i].οnclick=function(){
console.log(i)
}
}
</script>
解决方案一、用立即执行函数垫一下
for(var i=0;i<btn.length;i++){
(function(i){
btn[i].onclick=function(){
console.log(i)
}
})(i)
}
解决方法二、用let定义变量即可
for(let i=0;i<btn.length;i++){
btn[i].onclick=function(){
console.log(i)
}
}
二、箭头函数
例如:
let num = function(a) {
return a * 2;
}
console.log(num(3))
1、如果只有一个参数,()可省
2、如果只有一个return,{}可省
let num =a=>a * 2;
console.log(num(3))
两个参数
let num=(a,b)=>a+b;
console.log(num(2,3))
三、参数扩展
1、收集参数:第一个参数a对应1,第二个参数对应2,数组args对应剩下的数,以数组的形式出现
let arr = function(a, b, ...args) {
console.log(a); //1
console.log(b); //2
console.log(args); //[3,4,5]
}
arr(1, 2, 3, 4, 5)
2、展开数组:数组arr0和数组arr1,展开为一个数组
let arr0=[1,2,3];
let arr1=[4,5,6];
let Arr=[...arr0,...arr1];
console.log(Arr) //[1,2,3,4,5,6]
例如:
function show(...args1) { //以数组的形式收集
fn(...args1); //展开数组
}
function fn(a, b) {
console.log(a + b)
}
show(2, 3)
四、结构赋值,拆成你想要的粒度(粗细大小)
let [{a,b},[n1,n2,n3],num,str]=[{a:1,b:2},[6,8,10],0,'china'];
console.log(a,b,n1,n2,n3,num,str); //1 2 6 8 10 0 "china"
//拆
let[json,Array,Num,Str]=[{a:1,b:2},[6,8,10],0,'china'];
console.log(json,Array,Num,Str); //{a:1,b:2} [6,8,10] 0 'china'
五、字符串模板
例如:
let title="标题";
let context="内容";
let str='<div>\<h2>'+title+'<h2>\<h6>'+context+'</h6></div>';
console.log(str) //打印出来的不可换行
返单单引号包裹,多快好省
let str = `<div>
<h1>${title}</h1>
<h6>${context}</h6>
</div>`;
console.log(str) //打印出来的内容换行
暂时整理这些,后续再补充…