ES61

it2025-02-09  27

ES6

一、严格模式

进入ES6的严格模式的方式:

<script type="module></script>//通过type <script> "use strict"</sccript>//通过字符串

ES6中一些注意事项:

变量必须先声明后使用,声明方式为let和var。严格模式下,this发生改变 var a=3; function fn(){ // var a=4; console.log(this);//普通函数中不能使用this,this不是window而是undefined, console.log(this.a+a); } setTimeout(function(){ console.log(this);//回调函数中的this指向window },500) 函数的参数不能有同名属性 function fn(a,a){conlost.log(a);} fn(3,5);//普通模式下输出5,严格模式下报错 严格模式下,with语句报错,禁止使用 with(div.style){ width="50px"; height="50px"; backgroundColor="red"; } 只读属性修改报错str.length=3;不能使用八进制不能删除不可删除属性delete arr.length;eval不能被重新赋值且外部内容引用不到eval内部 for(var i=1;i<6;i++){ eval("obj"+i).a=i; //实现var obj1={a:1};var obj2={a:2};.... }//将字符串反射为变量,且该变量必须存在于栈中 eval和arguments不能被重新赋值 不能使用arguments.callee 和arguments.callee.caller 这两个一般用于匿名函数,所以减少匿名函数的使用不能使用fn.caller和fn.arguments获取函数调用的堆栈增加的保留字

二、let和const

let

var和let都是定义变量。

let定义变量,不再作为window的属性使用。 let a=3; this.a;window.a;//不存在 let定义的变量只存在于{}内 if(true){ let i=3; i++; } console.log(i);//报错 let 先定义后使用,否则报错 let a=3; function fn(){ console.log(a);//不能在定义之前使用 let a=4; } let更突出作用域范围,只要有{}的内部的let定义都仅限于{}内部的局部变量。

const

常量的目的是不允许修改这个内容值,第一次被定义和被锁定写入常量名是大写加_const OBJ_A={a:1,b:2};尽量不要使用常量定义引用类型,因为引用地址会改变

三、箭头函数

箭头函数的使用:

var fn=(a,b)=>{return a+b;}

等同于

var fn=function(a,b){ return a+b; } 当参数只有一个时,箭头函数的()可以省略,当没有参数或者多个参数时,必须使用() var fn=a=>{ a+=5; return a; } var fn=()=>{ console.log("aaa"); } 如果箭头函数内语句只有一句,并且是return时,return和{}可以省略。多条语句不可省略。 var fn=(a,b)=> a+b;

3.当回调函数使用箭头函数时,函数内部的this仍然指向函数外部this,不因回调改变this指向。

最新回复(0)