var spider = spider || {};
(function (JOINSSE){
//TODO a b here
spider.mainLogView = mainLogView;
})(spider);
1
jarlyyn 2015-05-05 15:50:43 +08:00
闭包。
变量作用域的问题。 |
2
bigfei 2015-05-05 16:20:35 +08:00
|
3
dorentus 2015-05-05 17:30:22 +08:00 1
我怎么感觉这代码还是有问题……
传入的参数名叫 JOINSSE, 但是里面引用的变量名是 spider,那么在函数里面找不到,往外找,最后还是会找到外面的某个 spider 而不是传入作为参数的那个 spider。 |
7
yangmls 2015-05-05 18:06:21 +08:00 1
@Gonster 在闭包外部,spider 以引用的形式传入闭包,这个引用名是 JOINSSE,你可以直接使用 spider,js 的作用域会向外查找,但 JOINSSE 就白传了
|
9
iyangyuan 2015-05-05 19:16:06 +08:00 via iPhone
js里只有两用作用域:一是全局作用域,即Global。二是由function定义的局部作用域,或者叫块级作用域,也可以理解为私有作用域。
|
10
EXDestroyer OP |
11
yangmls 2015-05-05 21:21:42 +08:00
@EXDestroyer 呃。。。那为什么还要直接操作 spider 对象?
|
12
EXDestroyer OP @yangmls 我也不清楚,因为没接触过这种写法,但是项目里每个文件都是这个模板,每个里面都有传一个类似JOINSSE的参数,外面的spider全部是固定的
|
13
rokeyzki 2015-05-07 18:00:18 +08:00
|
14
lalalanet 2015-05-08 14:14:12 +08:00
@EXDestroyer 这就是错的,唯一有用的就是第一句
|
15
banri 2015-05-24 00:26:38 +08:00 via iPhone
第一行是定义全局变量,这个spider若存在,则还是它,否则是一个空对象。
后面是一个立即执行的匿名函数,传入了一个spider的参数…变量名冲突是什么意思,没明白楼主想知道什么。。。我是半吊子 |