当前位置: 首页 > Web前端 > HTML

ES6指北[1]-let,const

时间:2023-04-02 21:14:16 HTML

1.ES61.1的学习方法js学习顺序ES5->ES6->ES7->ES8等等ES61.2不要学不学ES5well2.变量声明的方法a=1vara=1//上面两个是ES3语法,下面两个是ES6语法leta=1consta=12.0块级作用域{}看mdn块级作用域更类似于局部作用域2.1a=1会声明一个全局变量吗?varafunctionfn1(){varafn2()functionfn2(){a=1console.log(window.a)//undefined}}fn1()显然当var声明一个全局变量时,a=1不能如果你声明一个全局变量,你只能给它赋值。结论:a=1,意思不清楚2.2varfunctionfn()的问题{if(true){console.log(a)//undefined,应该报错}else{//下面的代码不会executevaraconsole.log(a)}}fn()即使不执行var,变量也会被提升,也就是说var声明的变量没有块级作用域,js程序员对于让var具有块级范围。通常的方法是立即执行函数。var建议全部写在第一行——《js语法精髓》2.3let2.3.1let的由来下面写一段代码只暴露一个global如果变量blues写成var,1.一个立即执行函数需要2.需要一个函数来包装a(function(){vara=1window.blues=function(){console.log(a)//1}})()使用let写{leta=1window.blues=function(){console.log(a)//1}}blues()console.log(a)//a不是definedlet的特点let的作用域在最近的{}之间Let不能重复声明[。即使用了var,也不会有人重复声明^_^】使用let声明的变量可以强制更新块级作用域内的变量【见mdn最后一个for循环例子】let'stemporarydeadzone【tempdeadzone]——如果在leta之前使用a,会报错{leta=1{console.log(a)//aisnotdefinedleta=2}}//这给我们养成了一个好习惯-所有变量声明应该写在前面testif(true){leta=1}else{leta=2}console.log(a)//???//answer:aisnotdefined简单理解let-let要看哪个花括号2.4constconst和let一样,只有一个区别——只有一次赋值机会,而const必须在声明的时候赋值:英文意思是常量——一个固定的值{consta=1console.log(a)//1a=2console.log(a)//报错——Assignmenttoconstantvariable.[Assignmenttoconstantvariable(wrong)]}Usingconst{constPI=3.1415926}3.let的扩展通过for循环中的letHTML部分onclick问题解决

  • Navigation1
  • Navigation2
  • Navigation3
  • 导航4
  • 导航5
  • 导航6
JS先看用var写varliTags=document.querySelectorAll('li')对于(vari=0;i