发表于: 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}();
知乎看到的解释:
闭包:
其实理解了作用域、作用域链、函数,闭包就很好理解了。太晚,懒得写了,有时间再补。
收获:如上
评论