当前位置: 首页 > 后端技术 > Node.js

JavaScript前端面试题篇——2022-09-20

时间:2023-04-04 00:52:20 Node.js

每日3题1下面代码执行后,控制台输出什么?//index.jsconsole.log(1);import{sum}from"./sum.js";console.log(sum(1,2));//sum.jsconsole.log(2);exportconstsum=(a,b)=>a+b;2下面代码执行后,控制台输出什么?const值={number:10};constmultiply=(x={...value})=>{console.log((x.number*=2));};multiply();multiply();multiply(value);multiply(value);3在浏览器的控制台执行以下代码后,页面会发生什么变化[].forEach.call($$("*"),function(a){a.style.outline="1pxsolidred"});公众号【今天也写个bug】更多前端面试题答案与分析1//答案:213//考察es6模块化//import命令在编译阶段执行//并且import有一个提升效果,会提升到整个模块的头部//所以模块合并后,相当于:console.log(2);exportconstsum=(a,b)=>a+b;console.log(1);console.log(sum(1,2));//所以最后的输出是213//sourcecode//index.jsconsole.log(1);import{sum}from"./sum.js";console.log(sum(1,2));//sum.jsconsole.log(2);exportconstsum=(a,b)=>a+b;2//答案:20202040//ES6可以为函数参数指定默认值constvalue={number:10};const乘法=(x={...value})=>{console.log((x.number*=2));};multiply();//没有传递参数,使用默认值,x={number:10},这个对象不是值,而是一个新对象,输出20multiply();//同上,x={number:10},也是一个新对象,输出20multiply(value);//传参,x=value,输出20,改变value.numbermultiply(value);//x=value,输出40,改变value.number3//答:页面上的所有元素都会用红色勾出//$$()函数是浏览器提供的命令行API,等价todocument.querySelectorAll()//$$('*')会选择页面中的所有元素,得到一个数组[].forEach.call($$("*"),function(a){a.style.outline="1pxsolidred";});//call()方法调用一个指定this值的函数,单独给定一个或多个参数。//这里这是一个元素数组,参数是一个函数function(a){...}//数组的forEach方法接收一个回调函数,即function(a){...}//等同于:[所有元素].forEach(function(a){a.style.outline="1pxsolidred";});