当前位置: 首页 > Web前端 > JavaScript

前端面试题每日3题——2022-09-05

时间:2023-03-27 11:38:15 JavaScript

19下面代码执行后,控制台输出什么?vara2={},b2=Symbol('123'),c2=Symbol('123');a2[b2]='b';a2[c2]='c';console.log(a2[b2]);20下面代码执行后,控制台输出什么?vara3={},b3={key:"123"},c3={key:"456"};a3[b3]="b";a3[c3]="c";console.log(a3[b3]);21下面代码执行后,控制台输出什么?consta={i:1,toString(){返回a.i++;},};控制台日志(a==1&&a==2&&a==3);】答案与分析19//答案:b//探索Symbol类型//ES6引入了一种新的基本数据类型:Symbol//一个符号值可以作为一个对象属性的标识符;这是此类型目的的唯一数据类型。//从Symbol()返回的每个符号值都是唯一的。vara2={},b2=Symbol("123"),c2=Symbol("123");//符号值是唯一的,所以b2和c2作为对象属性标识代表两个不同的属性a2[b2]="b";a2[c2]="c";console.log(a2[b2]);//输出b20//答案:c//考察对象的属性,隐式转换//对象的属性名只能是字符串或符号类型//如果对象的属性名不是这两者,就会beimplicitlycasttostring//对于非字符串类型,它将被转换为字符串类型//基本类型:null=>'null',undefined=>'undefined'//true=>'true',false=>'false',数字一般直接引用(极小值或极大值用指数形式引用)//对象转为字符串类型:如果对象的valueOf方法返回的是基本类型,则根据的返回值进行转换valueOf//否则根据对象的toString方法的返回值进行转换vara3={},b3={key:"123"},c3={key:"456"};a3[b3]="b";//b3是一个普通对象,valueOf返回的是它自己,不是基本类型,所以用toString返回值转换成stringa3[c3]="c";//同上//和普通对象的toString方法都返回'[objectObject]'//所以经过上面的两次赋值,a3就是:{'[objectObject]':'c'}console.日志(a3[b3]);//最终输出c21//答案:true//调查类型转换//==操作将执行类型转换//如果操作数之一是对象,另一个是数字或字符串,//将尝试转换使用对象的valueOf()和toString()方法将对象转换为原始值。//如果valueOf返回基本类型,则根据值进行转换,否则根据toString的返回值进行转换consta={i:1,toString(){returna.i++;},};//对于a==1,尝试将对象a转换为数字类型//a是普通对象,其valueOf返回自身,所以根据toString返回值进行转换//a.toString()返回1,所以a==1为true//然后a.i递增为2//同样判断a==2,再次触发toString方法返回2,a==2为true//然后a.i递增为3//同样a==3是trueconsole.log(a==1&&a==2&&a==3);//最终输出为真