# 作用域-作用域链-闭包
setTimeout(function() {
console.log(a);
}, 0);
var a = 10;
console.log(b);
console.log(fn);
var b = 20;
function fn() {
setTimeout(function() {
console.log('setTImeout 10ms.');
}, 10);
}
fn.toString = function() {
return 30;
}
console.log(fn);
setTimeout(function() {
console.log('setTimeout 20ms.');
}, 20);
fn();
// 打印
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function a() {
console.log('11111111111')
}
a.toString = function() {
console.log('22222222222222')
return 3000
}
1
2
3
4
5
6
7
2
3
4
5
6
7
function foo() {
var a = 10
b = 20
function bar() {
console.log('a+b=', a + b)
}
return bar
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
for (var i = 1; i < 5; i++) {
console.log('i===', i)
}
for (var i = 1; i < 5; i++) {
(function (val) {
setTimeout(() => {
console.log('i===', val)
}, 0)
})(i)
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
for ( var i=1; i<=5; i++) {
setTimeout(() => {
console.log( i );
}, i*1000 );
}
1
2
3
4
5
2
3
4
5
for ( var i=1; i<=5; i++) {
((j) => {
setTimeout(() => {
console.log( j );
}, j*1000)
})(i)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
for ( let i=1; i<=5; i++) {
setTimeout(() => {
console.log( i );
}, i*1000 );
}
1
2
3
4
5
2
3
4
5
← 继承 发布-订阅和观察者模式 →