26-变量深入与闭包
码路教育 9/5/2001
# 一. 使用var声明变量的特点,为什么使用let声明变量
# 二. 研究数组中如下的高阶函数
every()
indexOf()
reduce()
slice()
some()
splice()
# 三. 说一下,你是如何理解闭包的?
# 四. 下面程序的运行结果是
console.log(fn);
if (1 == 1) {
console.log(fn);
function fn() {
console.log("ok");
}
}
console.log(fn);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 五. 下面程序的运行结果是
console.log(num);
console.log(fn);
if ([]) {
fn()
var num = 100;
function fn() {
console.log("a")
}
}
console.log(fn);
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 六. 下面程序的运行结果是
function fn(i) {
return function(n) {
console.log(n + (++i));
}
}
var f = fn(2);
f(3);
fn(5)(6);
fn(7)(8);
f(4)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 七. 下面程序的运行结果是
var foo = "hello";
(function(foo) {
console.log(foo);
var foo = foo || "word";
console.log(foo);
})(foo);
console.log(foo);
1
2
3
4
5
6
7
2
3
4
5
6
7
# 八. 下面程序的运行结果是
var a = 9;
function fn() {
a = 0;
return function(b) {
return b + a++;
}
}
var f = fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 九. 下面程序的运行结果是
let obj = {
x: 1,
y: [10, 20]
};
let obj2 = obj;
let obj3 = {
...obj2
};
obj2.x = 100;
obj2.y[1] = 30;
obj3.x = 200;
obj3.y[2] = 40;
obj = obj3.y = {
x: 0,
y: [1, 2]
};
console.log(obj, obj2, obj3);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 十. 下面程序的运行结果是
let a = ? ;
if (a == 1 && a == 2 && a == 3) {
console.log('OK');
}
1
2
3
4
2
3
4
# 十一. 下面程序的运行结果是
let arr = [12.5, 100, 0013, '27px', 456];
arr = arr.map(parseInt);
1
2
2
# 十二. 下面程序的运行结果是
var b = 10;
(function b() {
b = 20;
console.log(b);
})();
console.log(b);
1
2
3
4
5
6
2
3
4
5
6