<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- <ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul> -->
</body>
<script type="text/javascript">
// var li = document.querySelectorAll("ul li")
// // for(let i = 0;i<li.length;i++){
// // li[i].οnclick=function(){
// // alert(i+1)
// // } }
// //let方法
// for (var i = 0; i < li.length; i++) {
// (function(i) {
// li[i].onclick = function() {
// alert(i + 1)
// }
// }
// )(i)
// }
//通过函数自执行方式(闭包),营造局部变量
// const
// 没有变量提升
// 局部作用域
// 声明必须赋值
// 赋值后不能修改
// 建议大写
// 解构
// var arr =[0,1,2,3,4,5];
// var [a,b,...rest]=arr;
// console.log(arr);
// console.log(a,b,rest);
// 把对象或者数组解构为单独的变量
// 数组解构
// 用,分割可以跳过
// ...剩余值
// 给默认值
// 有顺序的
// let[a,,b,,c,d=10,...res]=arr;
// 对象解构
// let{age,name,eag=2}=obj;
// 变量名和对象的键名保持一致,无序的
// var obj ={name:"大漂亮",age:18}
// 字符串检测
// let str = "我是大漂亮,说一个5星斗帝"
// alert(str.endsWith("斗帝")) 是否结尾包含
// alert(str.startsWith("我是")) 是否开头包含
// alert(str.includes("大漂亮")) 是否包含
// 字符串方法
// repeat重复
// var str ="我爱你"
// alert(str.repeat(100))
// alert(str.padStart(5,"不行"))
// padStart(len ,sub)把字符串 用Sub填充到len长度
// alert(str.padEnd(8,"我还是爱你"))
// padEnd(len ,sub)把字符串 用Sub填充到len长度 从后开始填充
// 箭头函数 函数简写
// =>前面是函数参数
// =>后面是函数体 也是函数的返回值
// 如果参数只有一个,则可以省略括号
// var a =function(b){b*10};
// 如果函数体有多条语句用{}包裹
// 如果返回的是一个对象则返回的内容用()包裹
// var obj={name:"大漂亮",age:18}
// var fun = ()=>
// ({name:"大漂亮",age:18})
// console.log(fun());
// var fun2=()=>({name:"大漂亮",age:18})
// var a =b=>b*10;
// console.log(a(5));\
// 箭头函数的this指向
// var obj={
// name:"大漂亮",
// age:18,
// s:function(){
// setInterval(()=>{
// // setInterval是省略的windowe前缀
// // 谁调用的函数,谁是this
// // setInterval setTimeout this指向windowe
// // 要想this指向obj 箭头函数this指向上一层作用域的this
// console.log(`大家好,我是${this.name}今年${this.age}`);
// this.age++}
// ,2000)
// }
// }
// obj.s()
// es6不定参数
// function add(...arg){
// // arg是一个参数数组是不定义
// var re=0;
// // 遍历arg数组,累家
// for(let i =0;i<arg.length;i++){
// re+=arg[i];
// }
// alert(re);
// return re;
// }
// add(1,2);
// add(1,3,5)
// function add(...arg){
// arg是一个参数数组,是不定的
// var re = arg.reduce((a,b)=>a+b)
// reduce返回的值试下一次便利的a
// alert(re);
// }
// add(1,2,3,4)
// 拓展参
// 调用函数时候,把数组扩展后当参数传递
// function z (...arg){
// alert("今天开会的有"+arg)
// }
// var arr=[1,3,5,7]
// z(...arr)
// 用...吧数组展开为单个参数
// var arr=[5,300,50,100,-10];
// var min=Math.mim[...arr];
// var max=Math.max[...arr];
// alert(max);
// apply 执行一个函数冒充this,参数用数组的形式传递
// var max2= Math.max.apply(null,arr);
// 执行max函数 函数的this为null,函数的参数为arr
// alert(max2)
// 对象的属性,与方法的简写
// var age=18;
// var name ="mumu"
// var obj={
// age:"age",
// name:"name",
// say:function(){
// alert("我是+this.name")
// }
// }
// var obj ={
// age,
// name,
// say(){
// alert("我是"+this.name)
// }
// }
// obj.say()
// 动态属性
// var a ="my"
// var b="name"
// var obj ={
// age:18,
// [a+b]:"MUMU"
// }
// console.log(obj);
</script>
</html>