Es6学习笔记(第一篇)

	变量声明
		1 变量不能重复命名
		let star = '罗志祥';
		let star = '小猪';

		2 块级作用域
		{
			let girl = '周扬青';
			//var girl = '周洋青';
		}
		console.log(girl)
		//let报错 var打印出undifined

		3 不存在变量提升
		console.log(song)
		let song = 'hhh'
		//var song = 'hhh'
		//用var打印出undifined 用let直接报错 不允许在变量声明之前使用变量

		4 不影响作用域链
		{
			let school = 'gdcjdx'
			function fn(){
				console.log(school)
			}
			fn();
		}

	声明常量
		1 常量一定要赋初值
		const SCHOOL = 'gdcjdx';
		2 常量名一般大写
		3 常量值不可修改
		4 块级作用域
			{
				const BOY = 'szj';
			}
			console.log(BOY)
			会报错
		5 对常量数组或对象的 元素 进行修改,不算做修改,不会报错
		const ARRAY = ['uzi','ming','mxlg'];
		ARRAY.push('meiko');
		不报错

	变量的解构赋值	
	允许按照一定模式在数组和对象中提取值,对变量进行赋值
	此为解构赋值
		数组的解构
			const F3 = ['小沈阳','刘能','大张伟'];
			let [xiao,liu,da] = F3;
			console.log(xiao)
			console.log(liu)
			console.log(da)
		对象的解构
			const zhao = {
				name:'zhao',
				age:'unknown',
				ability:function(){
					console.log('我会演小品')
				}
			}

			let {ability} = zhao;
			ability();

	新的字符串声明方式 ``
		声明字符串
			let str = `我是一个字符串`;
			console.log(str,typeof str);

		符号内容中可以出现换行符
			let str = `<ul>
						<li><li>
						<ul>
					   `
			换行拼接不用像原生JS一样 用 ’和+ 完成

		变量拼接  一定要注意格式 ${}
			let lovest = '彭于晏';
			console.log(`${lovest}是我的男朋友`)

	对象的简化写法
	对象中属性和方法可直接写入,方便简洁
		let name = '彭于晏';
		let speak = function(){
			console.log(name)
		}

		const obj = {
			name,
			speak,
			improve(){
				console.log("nothing")
			}
			//对象方法的省略
		}
		// speak();
		console.log(obj)
		obj.improve();

	箭头函数
		原来:
		let fn = function(){

		}
		箭头:
		let fn = (a,b) =>{
			return a+b;
		}
		console.log(fn(1,2))

		箭头函数的特性
			1 this是静态的,this始终指向函数声明时所在作用域下的this的值
				function getName(){
					console.log(this.name)
				}
				let getName2 = () =>{
					console.log(this.name)
				}

				window.name = 'gdcjdx';
				let obj = {
					name:'ggddcc'
				}
				//一般调用
				// getName();
				// getName2();

				//call调用
				getName.call(obj);//this 发生改变
				getName2.call(obj);//this 不变
		2 不能作为构造函数实例化对象
		let Person = (name,age) =>{
			this.name = name;
			this.age = age;
		}
		let me = new Person(xiao,10);
		console.log(me)
		会报错 this无法实现构造

		3 不能使用argument变量

		4 还可简写
			简写小括号:当且仅当只有一个形参时
			let add = n =>{
				return n+n;
			}
			add(9);
			简写花括号: return 也要去掉
			let pow = (n)=> n*n;
			console.log(pow(9))
			
	普通函数this指向分为4种情况:
		1 obj.getName(); 对象方法指向obj,
		2 getName(); 非严格模式下,指向window,严格模式下为undefined
		3 var a  = new A();
			a(); 指向A本身  构造函数
		4 getName().apply(obj); apply/call

	箭头函数本身没有this和arguments的,在箭头函数中引用
	this实际上是调用的是定义时的上一层作用域的this
	这里强调的是上一层作用域,是因为对象是不能形成独立的作用域
		var obj  = {
			say:function(){
				var f1 = () => {
					console.log('111',this);
				}
				f1();
			}
		}
		var o = obj.say;
		o(); f1执行时,say函数指向window,故f1中this指向window
		obj.say(); f1执行时,say函数指向obj,故f1中this指向obj

		var obj = {
			pro:{
				getPro:()=>{
					console.log(this);
				}
			}
		}
		obj.pro.getPro();
		this 指向window,因箭头函数定义时,getPro的上一级时pro,是一个对象,不能形成单独的作用域,故指向window
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值