发表于: 2017-03-27 22:54:04

1 983


今天完成的事情:学习作用域,作用域链,函数,闭包

明天计划的事情:学习对象,理解函数和对象的关系

遇到的问题:js很多概念没理清楚,把对象理解了,就开始利用对象写任务4

收获:

函数作用域:

    权威指南的解释:在一些类似c的语言的语言中,花括号内的每一段代码都具有各自的作用域,变量声明在它们     的代码段外是不可见的,我们称之为块级作用域。而js取而代之的使用了函数作用域:变量在声明他们的函数体     以及这个函数体嵌套的任意函数体都是有定义的。

    举个例子:

function test() {
   for (var i = 0; i < 10; ++i) {/**/}
   console.log(i);

}


test();

结果:

作用域链:理解了作用域,作用域链就好理解了。

首先,什么是作用域链?

我是这么理解的:包含变量的作用域形成的路径。

权威指南对于链表作用的介绍: 查找变量时,从作用域链第一个对象开始找,找不到就找下一个,找到为止。如果找不到,就会抛出引用错误异常。

什么意思呢?看例子吧

var shit = 0;
function test() {
   var shit = 4;

   function fuck() {
       return shit + 15;
   }

   return (fuck());
};

console.log(test());

执行fuck时,作用域链是:

fuck()->test()->window

在fuck()作用域找不到shit;所以找上一级的rest(),然后找到了

所以输出为:

函数:这个东西还是没理解透。

函数是什么:一段代码。

作为值的函数:

下面是一个函数的定义:

function shit(oo) {
  return oo;
}

权威指南讲解的很清楚:创建一个新的函数对象,并将其值赋给变量shit。函数的名字实际上是看不见的,

它(shit),仅仅是变量的名字,这个变量带指函数对象。

就是说,shit是对一个 函数对象的引用。

如果 var nmsl = shit;   那么nmsl和shit都指向同一个函数对象。


立即执行的函数表达式:

var shit = function() {return 9}();


知乎看到的解释:


闭包:

其实理解了作用域、作用域链、函数,闭包就很好理解了。太晚,懒得写了,有时间再补。


收获:如上


返回列表 返回列表
评论

    分享到