1.请解释一下doctype的作用,有doctype和没有doctype有什么区别
答:声明文档类型,此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。
2.XHTML与HTML有什么区别,什么情况下用XHTML
答:XHTML可以认为是XML版本的HTML,为符合XML要求,XHTML语法上要求更严谨些。
3.请写出3个使用this的典型应用
(1)、在html元素事件属性中使用,如:
<input type=”button” onclick=”showInfo(this);” value=”点击一下”/>
(2)、构造函数
function Animal(name, color) {
this.name = name;
this.color = color;
}
(3)、input点击,获取值
<input type="button" id="text" value="点击一下" />
<script type="text/javascript">
var btn = document.getElementById("text");
btn.onclick = function() {
alert(this.value); //此处的this是按钮元素
}
</script>
4.数组去重
一、利用ES6 Set去重(ES6中最常用)
function unique5(arr){
var x = new Set(arr);
return [...x];
}
二、双重for循环
let arr=[1,2,2,3,1,4,4,8,8,8,8,5,5,6,6,7,7,8]
//第一次遍历数组
for(var i=0;i<arr.length;i++){
//第二次遍历数组,是第一遍历数组下标的下一个数据
for(var j=i+1;j<arr.length;j++){
//判断第一层遍历数据和第二层遍历的数据是否相同
if(arr[i]==arr[j]){
//如果数据相同则通过splice删除一条相同的数据
arr.splice(i,1)
//i是第一层遍历的下标,因为上一步删除了一条数据,所以下标也需要减一,否则实际下标,要比数组中的数据更多
i--;
//j 也同样需要和i一样减一,保持遍历依旧同步判断
j--;
}
}
//去重完成以后,数组数据在控制台输出
console.log(arr)
5.数组求和
function sumArray(arr){
let sum = 0;
for(let i=0;i<arr.length;i++){
sum = sum + arr[i];
}
return sum;
}
var array1 = [1,2,3,4,5,6,5,4]
var result =sumArray(array1);
console.log(result);
6.如何显示/隐藏一个DOM元素?
display:block;display:none
7.javascript中如何检测一个变量是一个string类型?
function a(obj){
return typeof(obj)=="string";
}
8.网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“xx年还剩xx天xx时xx分xx秒”
9.补充代码,鼠标单击button1后将button1移动到button2的后面
10.JavaScript中如何对一个对象进行深度clone,以及什么情况下会使用到深度clone
11.鼠标点击页面中的任意标签,alert该标签的名称。(注意兼容性)
12.请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象 var url = "witmax.cn/index.php?k…"; function parseQueryString(argu){???}
13.如何点击每一列的时候alert其index?
<ul>
<li>这是第一条</li>
<li>这是第二条</li>
<li>这是第三条</li>
</ul>
window.onload = function(){
var lis = document.getElementsByTagName("li");
for (var i = 0; i < lis.length; i++) {
lis[i].onclick = (function(x) {
return function() {
alert(x);
}
})(i);
}
}
14.请给出异步加载js方案,不少于两种。
defer,异步加载。 async,异步加载
15.判断一个字符串中出现字数最多的字符,统计这个次数
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)]++;
}
};
var iMax = 0;
var iIndex = '';
for(var i in json){
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
16.在html中,position取值有哪几种,默认值是什么?
static, relative, absolute, fixed。默然的值是: static
17.如何居中一个浮动元素?
.wap{
width:500px;
height:300px;
float:left;
margin-left:50%;
position:relative;
left:-250px;
background-color:#CCC;
}
18.怎么样从web前端方面优化性能?至少列举5点?
减少http请求:合并js文件/合并css文件/雪碧图的使用(css sprite)/使用base64表示简单的图片
减小资源体积:gzip压缩/js混淆/css压缩/图片压缩
缓存:DNS缓存 /CDN部署与缓存 /http缓存
移动端优化:/使用长cache,减少重定向/首屏优化,保证首屏加载数据小于14kb/不滥用web字体
19.js延迟加载的方式有哪些?
setTimeout,async,await
20.ajax请求时,如何解释json数据?
前端在解析后端发来的数据,使用JSON.parse()方法把字符串转为json对象. 前端在向后端发送数据,使用JSON.stringify()方法把json对象转为字符串.
21.如何阻止事件冒泡和默认事件?
22.iframe有哪些缺点?
⒈iframe会阻塞主页面的Onload事件;
⒉iframe和主页面共享链接池,而浏览器对相同城的链接有限制,所以会影响页面的并行加载;
⒊使用iframe之前需要考虑这两个缺点,如果需要使用iframe,最好是通过JavaScript;
⒋动态给iframe添加src属性值,这样可以可以绕开以上两个问题
⒌不利于seo
⒍代码复杂,无法一下被搜索引擎索引到
⒎iframe框架页面会增加服务器的http请求,对于大型网站不可取
⒏很多的移动设备无法完全显示框架,设备兼容性差
23.常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
24.你做的页面在哪些浏览器测试过?这些浏览器内核分别是什么?经常遇到的浏览器兼容性有哪些?原因,解决方法是什么?
25,如果制作一个访问量很大的网站,对css,js和图片应该怎么处理?