每日3题16下面代码执行后,控制台输出什么?leta={n:1};letb=a;a.x=a={n:2};console.log(a.x);console.log(b.x);17下面代码执行后,输出到控制台是?leta={};letb="123";letc=123;a[b]="b";a[c]="c";console.log(a[b]);18下面的代码执行完之后,控制台的输出是?函数用户(obj){obj.name="aaa";对象=新对象();obj.name="bbb";}letperson=newObject();user(person);console.log(person.name);公众号【今天写个bug】获取更多前端面试答案与解析问题16//Answer:undefined{n:2}//检查赋值运算符leta={n:1};让b=a;//b指向{n:1}a.x=a={n:2};//先找到a.x等待赋值,即对象的属性x{n:1}//然后计算赋值=右边的表达式:a={n:2},assignatoanewobject//将a赋值给新对象不会影响b//赋值表达式的值本身就是要赋值的值,所以a={n:2}returns{n:2}//所以给{n:1}的属性x赋值{n:2}console.log(a.x);//a被赋值为{n:2}没有属性x,所以输出:undefinedconsole.log(b.x);//b.x是{n:1}的属性x,所以输出:{n:2}17//答案:c//调查对象的属性名和键访问//对于对象obj={a:1}//obj.a语法称为“属性访问”//obj['a']语法称为“键访问”//在对象中,属性名称始终是字符串//如果使用字符串意外值作为属性名,首先会转为字符串leta={};letb="123";letc=123;a[b]="b";//此时a=>{'123':'b'}a[c]="c";//此时a=>{'123':'c'}console.log(a[b]);//输出c18//答案:aaa//检查引用类型functionuser(obj){//obj指向person引用的对象{}obj.name="aaa";//objperson引用的对象变为{name:'aaa'}obj=newObject();//obj指的是一个新对象,对person没有影响obj.name="bbb";//obj=>{name:'bbb'},对person没有影响}letperson=newObject();//人=>{}用户(人);控制台日志(人名);//人=>{name:'aaa'}
