前端面试题整理——关于堆栈内存和闭包作用域的题

// 一个对象里面,属性名不能重复,属性名一般是字符串,数字属性名==字符串属性名

    /*
    let a={},b='0',c=0;
    a[b]='abc';
    a[c]='123'
    console.log(a[b])
    */
    //考点进一步深入提问:对象和数组的区别

/*
    let a={},b=Symbol('1'),c=Symbol('2');
    a[b]='abc';
    a[c]='123';
    console.log(a[b])
*/
    //考点进一步深入提问:自己实现Symbol

/*
    let a={},b={n:'1'},c={m:'2'};
    a[b]='abc';
    a[c]='123';
    console.log(a[b])
*/
    //考点进一步深入提问:Object.prototype.toString()和valueOf的区别

 

下面代码打印值:

    var test = (function(i){
        return function(){
            alert(i*=2)
        }
    })(2)
    test(5)

 

下面代码打印值:

    // a++,先a先跟别人运算,然后再累加1
    // ++a,先a自身累加1,然后再跟别人运算
    var a = 0, b = 0;
    // alert(a++)

    function A(a) {
        A = function (b) {
            alert(a + b++);
        }
        alert(a++)
    }
    A(1);
    A(2);

 

下面代码打印值:

    var x = 2;
    var y = {
        x: 3,
        z: (function (x) {
            this.x *= x;
            x += 2;
            return function (n) {
                this.x *= n;
                x += 3;
                console.log(x)
            }
        })(x)
    }
    var m = y.z
    m(4);
    y.z(5);
    console.log(x, y.x);

 

你可能感兴趣的:(前端面试题整理——关于堆栈内存和闭包作用域的题)