ES6相关介绍

ES6相关介绍

概念

ES6:ESNAScript6,新的JavaScript语法标准。2015年正式推出,目的是为了使JavaScript更加快捷与方便。

变量声明

1.var (全局变量)
函数作用域
没有if,switch,for,while,do,else作用域

function num(){
    a=15;
}
   num();
 console.log(a);

结果
在这里插入图片描述
2.let(局部变量)
局部作用域内(在一对{}启用)
不能变量提升
在一个作用域里面不能重复声明
在函数内部声明的不能在函数外部调用

for(let i=0;i<2;i++){
		console.log(i);//z输出 0 1
         }

3.const
const是局部变量
声明必须赋值
不能重复声明
建议大写
不会变量提升
值类型不能修改
什么时候用const
01 当声明变量不允许修改的时候,是个常量的时候
02 当某个变量大概率不会被改变(选择dom节点)

{
				// const PI=3.1415926;
				// const PI;
				// PI=3.1415926;
				// PI=3.14;
				// console.log(PI);
				const LIST=["I","Hate","You"];
				LIST.push("Love");
				console.log(LIST);
	}

结果(push为末尾插入)
在这里插入图片描述

解构(数组和对象)

1.数组解构
把数组,对象,解构为单独的变量
数组解构: …剩余值

var arr=[1,2,3,4,5,6,7,8];
	var [a,b,...rest]=arr;
	console.log(a,b,rest);
	
	ar [a,,b,,c,,d,...rest]=arr;
	// a:1,b:3,c:5,d:7,[8]  数组下标
	console.log(a,b,c,d,rest);
	
	var[a,,,b=10]=[1,2,3,4];
	console.log(a,b);

结果(字母对应数组相应下标元素,数组中没有元素为空)
在这里插入片描述
2.对象解构
和数组解构一致,{}
…rest剩余,没有顺序,leg=2

var {name,age,say="love you",...rest} = {name:"mumu",age:18,say:"兵不厌诈",leg:2,eye:2,head:"傻得可爱"};
		alert(name);
		alert(age);
		console.log(rest)
		alert(say)

结果
在这里插入图片描述

在这里插入图片描述

字符串ES6扩展方法

1.遍历字符串
for循环

var str="yue𠮷 口";
	for(var i=0;i<str.length;i++){
		console.log(str[i]);
		}

结果
在这里插入图片描述

for of

var str="yue𠮷 口";
for(let s of str){
 	console.log(s);
	 }

结果
在这里插入图片描述
2.字符串的检测
indexOf,lastIndexOf :返回值下标|-1

 var str = "台湾是中国的一个省份";
		
	alert(str.includes("福建"))

结果
在这里插入图片描述

includes(查找字符串) 返回true | false
includes包含 startsWith以xx开头 endWith以xx结尾

var str = "我爱我的祖国";
	console.log(str.includes('张'))
	console.log(str.includes('我'))
	console.log(str.startsWith('我爱你'))
	console.log(str.endsWith('祖国'))

结果
在这里插入图片描述
3.trim去掉两端空白,trimLeft去掉左边空白 ,trimRight去掉右边空白

var str = "  我爱我的祖国  ";
	console.log(str);
	console.log(str.trim());
	console.log(str.trimLeft());
	console.log(str.trimRight());

结果
在这里插入图片描述
4. repeat重复

	var str = "我爱你\n";  // \n代表重复字符串全部内容
	console.log(str.repeat(3))

结果
在这里插入图片描述
5.填充
padStart(填充总位数,填充字符串)
padEnd(填充总位数,填充字符串)

var str = "95";
		console.log(str.padStart(7,'0'))
		console.log(str.padStart(10,'-'))
		console.log("love".padStart(10,'-'))

结果
在这里插入图片描述
6.字符串模板

var obj = {name:"mumu",age:19};
		// 大家好,我的名字是mumu今年19岁
		var str = "大家好,我的名字是"+obj.name+"今年"+obj.age+"岁";
		console.log(str);
		
		var str2 = `<p class="item">大家好,
		我的名字是${obj.name}今年${obj.age}岁</p>`;
		console.log(str2);

结果
在这里插入图片描述

数组的高阶用法

1.forEach遍历

var arr = [1,3,5,9];
		// item遍历的元素;index元素的下标,self当前数组
		arr.forEach(function(item,index,self){
			console.log(index,item,self);
		})

结果
在这里插入图片描述
2.map映射,从现有数组映射出新的数组

var arr = [1,3,5,9];
var arr2 = arr.map(function(item,index,self){
			// return {age:item}
			//  return item+"¥"
			 return item*100+"¥"
		})
		console.log(arr)
		console.log(arr2)

结果
在这里插入图片描述3.reduce 累计
这次的a就是上一次计算结果 遍历项

var arr = [1,3,5,9];
var all =  arr.reduce(function(a,b,index,self){
			// return a*10+b;
			return a+b;
		})
		console.log(all);

结果
在这里插入图片描述
4.every 检测都是(每个符合最终返回true)

var arr = [1,3,5,9];
	var result = arr.every(function(item){
			return item>5;
		})
		console.log(result);

结果
在这里插入图片描述
5.some 检测有一个符合条件

var arr = [1,3,5,9];
var res = arr.some(function(item){
			return item>10
		})
		console.log(res);
		// forEach map filter
		var arr = [20,1,3,5,9];
		var arr2 = arr.filter(function(value){
			// 当返回的值为真,当前元素保留,
			// 返回的元素为假,当前元素被过滤掉
			return value>5;
		})
		console.log(arr2);
		

结果
在这里插入图片描述

函数参数

返回值
如果返回是一个对象,那么用括号包裹

function(){return {name:"cc",age:18}; }
()=>({name:"cc",age:18}

执行语句:如果执行有多行,返回语句要用return 执行语句要用{} 包裹
1.箭头函数(箭头函数就是函数的简写形式)
箭头左边:参数
箭头右边:返回值

	var arr = [1,2,3,5,8,12];
	arr.forEach(function(item){
		console.log(item)
	})
	arr.forEach(item=>console.log(item))

结果
在这里插入图片描述
2.函数的参数
函数的默认参数

 function say(color="黑"){
			 alert('没有你的世界是'+color+"色的");
		 }
		  say();
		  say("五彩");

结果
在这里插入图片描述
在这里插入图片描述
函数的拓展实参(调用)`

 function metting(a1,a2,a3){
			 console.log(`今天来参加,中共中央政治局常委会的有,${a1},${a2}${a3}同志`);
		 }
		 var arr = ["小王","小段","小龙","小曾"];
		 // 在函数调用时候把数组传入拓展.
		 metting(...arr)  //把arr数组拆分为单个参数掺入
		 metting.apply(null,arr);

结果
在这里插入图片描述
函数的不定参数(定义的时候)

function add(...list){ //把所有的单个参数,接收为一个叫list的数组
			 // 把参数list列表累计相加弹出
			 alert(list.reduce((a,b)=>a+b))
			 // arguments,关键字,指函数的参数列表,Array.from把类似数组的元素转换为数组
			 // var re = Array.from(arguments).reduce((a,b)=>a+b);
			 // alert(re);
		 }
		 add(15,20,30);

结果
在这里插入图片描述

class 类
extends继承
super父构造函数(要在所有方法最前面执行)
constructor构造函数
this指向实例
static静态的
new Box() 实例化类

<p style="text-align: right;">分数: <span class="score">100</span></p>
	 
		<script>
		// class 类就是function 构造函数的 语法糖(简写)  本质上还是函数 typeof class 
		// box类: 属性:生命力;颜色;dom节点;  方法:dead() 死亡,被打 生命值-1
		class Box{
			// 初始化实例(构造函数)
			constructor(life=1,x=0,y=0) {
				// 生命力
			    this.life = life;
				// 墙的x与y值
				this.x = x;
				this.y = y;
				// 创建一个节点
				var dom = document.createElement("div");	
				// 插入节点
				document.body.appendChild(dom);
				// 指定实例的dom
				this.dom = dom;
				// 更新dom
				this.updateDom();
				// 给dom添加点击事件
				this.dom.addEventListener("click",(e)=>{
					// 用的箭头函数,this指向的 上一层作用域this(Box实例)
					// 让生命值--
					this.life --;
					var score = document.querySelector(".score");
					score.innerText=score.innerText*1+1;
					// 如果生命值小于等于0,让dom从页面中删除
					if(this.life<=0){this.dom.remove();	}
					// 更新dom;
					this.updateDom();
					 
				})
				 
			}
			updateDom(){
				// 根据生命值的不一样
				// 赋值给他不同的颜色
				if(this.life<3){
					this.color="#c83a0b";
				}else if(this.life<=5){
					this.color="#791810";
					this.innerText = "5123"
				}else{
					
					this.color="#e3e3e3";	
				}
				// 修改dom的样式:宽;高;背景色;位置;左;顶
				this.dom.style.width = "100px";
				this.dom.style.height = "100px";
				this.dom.style.backgroundColor = this.color;
				this.dom.style.position="absolute";
				this.dom.style.left = this.x+"px";
				this.dom.style.top = this.y+"px";
			}
		}
		// Box是类:b1,b2,b3类的实例
		var b1  = new Box();
		// 当实例的时候会先执行constructor创建一个实例对象,也会执行updateDom更新dom
		var b2  = new Box(10,100,0);
		var b3  = new Box(4,200,0);
		
		// 创建一个新的MBox 可以移动box,继承 Box,
		// 自动移动(从上掉下来)
		// 继承Box
		class MBox extends Box{
			constructor(life=1,x=0,y=0) {
				// super调用父构造函的方法
			    super(life,x,y);
				// 停止动画id
				this.id =null;
				// 自动向下移动
				this.autoMoveDown();
			}
			autoMoveDown(){
				this.id = setInterval(()=>{
					// 更改y值
					this.y+=2;
					// 更新dom(继承Box)
					this.updateDom();
					if(this.y>window.innerHeight){
						// 选择到分数
						var score = document.querySelector(".score");
						// 如果触底减分
						score.innerText=score.innerText-10;
						// 如果操作了窗口的高,移除
						this.dom.remove();
						// 停止间隔调用
						clearInterval(this.id);
					}
				},16)
			}
		}
		// 实例化MBox;
		// var b4 = new MBox(4,300,0);
		// var b5 = new MBox(10,400,-200);
		// 
		// 随机创造20个方块
		for(var i=0;i<10;i++){
			// 随机生命 1-10
			var life = Math.ceil(Math.random()*5)
			// 随机y 0--500;
			var y = Math.floor(Math.random()*-500)
			// 实例化
			new MBox(life,i*80,y);
		}
	 
		</script> 

结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值