title: 8th Day
date: 2017-07-17 14:25:35
tags: [daily]
成为唯一标识符
|
|
- 调用这段代码即可生成一组特殊的标识符作为ID
读取文件
|
|
词法作用域
- 即代码在编写过程中体现出来的范围
作用域链
- 一个函数里可能有带有很多个函数,作用域链就是在这个基本上形成
- 一个函数至少有一个作用域,就是全局作用域,一个简单带有return的函数就是一个例子
- 当在函数中寻找变量,是从当前位置开始找,直到遇到这个变量的作用域,不管函数外面有没有这个变量的全局作用域,如果最后还没有就是undefined
- 同级的链不可混合查找
|
|
因为存在异步,所以循环会先走完才执行console
1234567891011function say0to4(){var i = 0;for (;i < 5; i++){(function f(the_i){setTimeout(() => {console.log(the_i);}, the_i * 100);})(i)}}say0to4();利用词法作用域来解决这个问题,将setTimeout写进函数里,每次执行循环都把i传入函数f,每次都执行异步,这样就可以避免在循环走完了才走回调函数
this
- 函数中有this,如果直接调用这个函数,此时的this就是Global(undefined)
- 这个函数被某个函数调用了,此时的this就是调用的这个函数
|
|
- 这是创建了一个对象D,new相当于让D创建了一个空对象,调用了c函数,此时c的this是D,所以将参数传到this.name和this.age,就相当于在D的空对象中创建了name,和age,并有了参数
- 用这种方法,即使函数c中return了另外的东西也不影响D对象中的属性和参数
|
|
- 这样操作即使是创建了D的新空对象,但函数c没有在空对象里创建属性和传入参数