八角网站建设,怎么看一个网站是不是仿站,哪些网站是用h5做的,云南网站优化哪家好前端笔试题总结#xff0c;带答案和解析#xff08;二#xff09; 这个系列将持续更新前端笔试题一期十题#xff0c;每五题做一个标题#xff08;方便跳转#xff09;#xff0c;您可以一期一期阅读#xff0c;也可以在点击汇总#xff0c;一口气看完#xff0c;如果…前端笔试题总结带答案和解析二 这个系列将持续更新前端笔试题一期十题每五题做一个标题方便跳转您可以一期一期阅读也可以在点击汇总一口气看完如果对题目有不理解的地方欢迎大家在评论区提问如果有更好的意见也欢迎大家留言
往期回顾
汇总持续更新
前端笔试题总结带答案和解析一
✨前端笔试题总结带答案和解析二
❤️前端笔试题总结带答案和解析三
11.以下代码的执行后str 的值是
var str Hellllo world;
str str.replace(/(a)\1/g, $1);答案Hello world 解析 对于正则表达式 /(a)\1/g其中(a)是第一个分组\1指向第一个分组即\1重复了第一个分组的内容所以该正则表达式等价于/(aa)/g 对于str.replace(a,b) 用第二个参数b替换掉第一个参数a,这里‘$1’也是指向第一个分组a 也就是使用 a 去替换掉 ‘aa’ 以下符合 ES6 写法的有 A class Foo { constructor() {return Object.create(null);} } Foo() B var m1; export m; C export var firstName’Michael’; D 在A模块中export{readFile}后在B模块中import readFile from ‘A’可以获取到readFile
答案C 解析 A:类必须使用new调用否则会报错。这是它跟普通构造函数的一个主要区别后者不用new也可以执行。 B:export命令规定的是对外的接口必须与模块内部的变量建立一一对应关系。 // 报错 export 1; // 报错 var m 1; export m; 上面两种写法都会报错因为没有提供对外的接口。第一种写法直接输出 1第二种写法通过变量m还是直接输出 1。1只是一个值不是接口。正确的写法是下面这样。 // 写法一 export var m 1; // 写法二 var m 1; export {m}; // 写法三 var n 1; export {n as m};
D:A模块对外暴露了一个对象引入的时候需要使用解构赋值
import {readFile} from ‘A’
来源牛客网 13.请给出下面这段代码的运行结果
var bb 1;
function aa(bb) {bb 2;alert(bb);
};
aa(bb);
alert(bb);答案1 2 解析这道题考察是局部变量和参数传递的问题。 function aa(bb) { bb 2; alert(bb); }; 在aa函数中bb是以传值的方式传入的在函数中会重新定义一个bb变量并将其值覆为2并不影响函数体外的bb变量所以其值仍然为1. 14.请问以下JS代码最后输出的len值是多少
var len 117;
let func {len: 935,showLen: function() {console.log(this.len);},show: function() {(function(cb) {cb();})(this.showLen)}
}
func.show();答案117 解析立即执行函数的this指向是window非严格模式下因为作为一个匿名函数在被调用的时候我们往往就是直接调用因此它的this是非常确定的那么len就取window下的len值了即117。 15. 以上 JavaScript 代码在浏览器中运行的结果是
var foo {n:1};
(function(foo){console.log(foo.n);foo.n 3;var foo {n:2};console.log(foo.n);
})(foo);
console.log(foo.n);答案1 2 3 解析第一步进行预编译var全局变量foo、匿名函数 function、var局部变量foo 第二步代码自上而下、自左向右执行计算 对全局变量foo进行赋值foo{n:1}注意此值为对象属于引用类型 匿名函数传入参数foo{n:1}自执行 console.log(foo);打出数字1 由于存在foo局部变量那么对foo变量进行赋值foo{n:3}同时更改了引用类型的参数值全局foo变量被重新赋值foo{n:3} 对局部变量foo进行重新赋值foo{n:2}; console.log(foo);打出数字2 全局变量foo{n:3},因此console.log(foo);打出数字3
15题的升级版断点调试一步步看原因 16.页面有一个按钮button id为button1通过原生的js如何禁用
A document.getElementById(“button1”).setAttribute(“Readolny”,true); B document.getElementById(“button1”).setAttribute(“disabled”,”true”); C document.getElementById(“button1”).Readonlytrue; D document.getElementById(“button1”).disabledtrue; 答案B D 解析input id“btnShow” type“button” value“点击” class“btn” 上面是一段按钮的html代码 如果要用原生的js来禁用这个按钮 可以用这样 document.getElementByIdx_x_x(“btnShow”).disabledtrue;这样就把按钮禁用了 如果要重新开启按钮则可以让disabledfalse;即可 那么在jquery下面要如何设置呢其实也很简单 利用jquery的attr的方法即可 $(“#btnShow”).attr({“disabled”:“disabled”}); 如要让按钮恢复可用可以采用removeAttr方法把disabled属性删除即可。 $(“#btnShow”).removeAttr(“disabled”); 17.以下哪些操作会触发Reflow
var obj document.getElementById(“test”);A alert(obj.className) B alert(obj.offsetHeight) C obj.style.height “100px” D obj.style.color “red”
答案B C 解析Reflow是重排 重排的本质是影响了布局树页面的渲染就需要从布局开始走接下来的五步 [不知道重绘的可以参考这篇文章] (https://juejin.cn/post/7240333779221987384#heading-27) A 只是读取类名不会影响布局树 不会触发reflow B 因为offset和scroll其实都是“相对”来计算的。有其他元素做参照物所以会回流一次确保准确。 C 改变元素的高 会影响布局树 所以需要reflow D 改变元素的元素 不影响布局树 需要repaint 重绘 repaint 的本质就是重新根据分层信息计算了绘制指令。当某些元素的外观被改变就需要重新计算。计算样式和绘制阶段之后的阶段都要重新过一遍。 18.代码var foo “10”3-“1”;console.log(foo);执行后foo的值为( )
A “102” B 102 C 12 D “12”
答案B 102 解析对于“”来说有两个含义第一个含义是做字符串拼接第二个含义是加减法中的加法。 1如果操作数里有一个是字符串其他的值将被转换成字符串 2其他情况操作数转换成数字执行加法运算。 而对于“ - ”来说只有一个含义就是做减法自然不会转化成字符串了。 19.执行以下程序输出结果为
function Person(age){this.age age;}Person.prototype {constructor:Person,getAge:function(){console.log(this.age);},}var ldh new Person(24);Person.prototype.age 18;Object.prototype.age 20;ldh.getAge();答案24 解析对象在调用方法和属性时依靠原型链的顺序进行查找先从自身查找然后是构造函数的原型对象接着是Object的原型对象,一旦找到时停止查找找不到则返回undefined。同时原型对象中的this仍然指向实例对象而非原型对象在本题中实例对象先调用原型对象的getAge()方法然后输出age属性值由于该实例对象已经有age属性同时其原型链中原型对象和原型对象的原型对象即Object对象均有age属性依据上述查找规则最终输出结果为实例对象的age即为24。 20.下列哪些会返回false
A null B undefined C 0 D ‘0’ 答案ABC 解析其他类型转Boolean类型的规则 null, undefined, “”, 0, -0, NaN 转换成布尔值是false 剩下的全转化 true; 针对D ‘0’是字符串 ‘’转字符串才是fasle 别的都是true 其它相关类型转换可见