Loading

ES6

ES6

1开发环境准备

2.脚手架

安装好node后,有了npx和npm两个命令

初始化项目:npx es10-cli create projectName

3.作用域

函数作用域:也叫局部作用域,函数内部定义的作用域

function test(){
    var abc = 123 //此时为局部作用域,关闭在函数作用域内,外面拿不到
  bcd = 123
}
但是就想让外部拿到里面的abc的值,一:return 二:闭包
function test(){
  var a = 100
  function test2(){
    return a
  }
  return test2
}
没有对外暴露a,只是暴露了函数。那么没有人能改动a,函数也没提供修改a的接口。且es6之前有变量提升,es6中有了块级作用域之后,就没有了变量提升
老实的待在块级作用域里面

  

块级作用域:es6前,var是没有块级作用域的

for(var i=0;i<len(arr);i++){

}
此时的i是全局作用域下,var没有块级作用域,只能靠函数作用域把它关住
if同理也是块级作用域

  

全局作用域:希望程序中任何一个位置都能拿到这个变量,那么就放到全局中。

函数外定义的变量,基本都是全局作用域

js中变量不能删除
var abcd = 123
delete abcd  //返回false

abc=234
delete abc //true  等价于delete window.abc
不加var是当做了全局对象window的属性存在,这是可以删除的
即便是到了es6中一样是这样子的
结论:无论在函数内还是函数外,只要加了var那么就是挂载在window对象的不同作用域下,例如python中的global()和local()返回的字典里面
如果不加var let const,那么就是挂载在window对象下面的属性,是全局作用域
只要是var const let声明的就是变量,是变量就有作用域,没有他们修饰的那只是属性,直接挂在window对象下。

动态作用域

最难的this
很多时候会默认this为window
this师动态的不是固定指向的

4.let与const

都有块级作用域,没有变量提升,let是变量,const是常量

posted @ 2020-09-09 06:36  浅忆尘  阅读(146)  评论(0编辑  收藏  举报