猿问

javascript面试题

var test=(function(){    var _v='a';    function changeV(){
        _v='b';
    };    function getV(){        return _v;
    }    return {        v:_v,        changeV:changeV,        getV:getV,
    }
})()

test.v//'a'test.getV()//'a'test.changeV()
test.v//'a'test.getV()//'b'

test.changeV()发生了什么,
大神 来讲讲 (¬_¬)

回来填坑。。。:其实就是当时没理解

var _a=1;
var obj={
    a:_a};
console.log(obj.a);//1_a=2;
console.log(obj.a);//1


RISEBY
浏览 478回答 1
1回答

当年话下

v:_v, 这里是对return 的对象进行了一个属性的赋值,赋的是一个字符串,这时候不是对象,直接copy的值。changeV和getV是闭包,操作的是_v这个变量。string和number类型的数据只是在使用的时候被转化成对象,操作完成在内存中存的是其valueOf后的值。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答