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

# 五. 下面程序的运行结果是

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

# 六. 下面程序的运行结果是

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

# 七. 下面程序的运行结果是

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

# 八. 下面程序的运行结果是

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

# 九. 下面程序的运行结果是

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

# 十. 下面程序的运行结果是

let a = ? ;
if (a == 1 && a == 2 && a == 3) {
    console.log('OK');
}
1
2
3
4

# 十一. 下面程序的运行结果是

let arr = [12.5, 100, 0013, '27px', 456];
arr = arr.map(parseInt);
1
2

# 十二. 下面程序的运行结果是

var b = 10;
(function b() {
    b = 20;
    console.log(b);
})();
console.log(b);
1
2
3
4
5
6
Last Updated: 12/25/2022, 10:02:14 PM