二十七、js的阻塞特性:所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。
直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。
为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。
css阻塞:因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。
而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。
二十八、meta元素可提供有关页面的元信息,比如针对搜索引擎和更新频度的描述和关键词
二十九: POST提交数据时四种常见格式
服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
setRequestHeader(“Content-type” , ”application/x-www-form-urlencoded”);
1)1. application/x-www-form-urlencoded 原生表单
2)2. multipart/form-data 表单上传文件
3)3. application/json
4)4. text/xml
三十: HTTP请求方法
GET:获取资源 POST:传输文本
PUT:传输文件 DELETE:删除文件
HEAD:获得报文首部
OPTIONS:访问服务器端可以提交哪些请求方法
三十一: js实现图片上传到服务器和回显
<input type="file" value="" id = "input_file"
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="imgPreview(this,0)">
function imgPreview(fileDom,i) {
var file = fileDom.files[0]; //获取文件
reader.onload = function(e) {
document.getElementsByClassName('file-box')[i].style.background="url("+e.target.result+")no-repeat";//回显图片
document.getElementsByClassName('file-box')[i].style.backgroundSize='200px 160px';
}
reader.readAsDataURL(file); //转码保存
}
//ajax请求
var formData = new FormData();
formData.append('photo', $('#input_file')[0].files[0]);
$.ajax({})
三十二: 简述浏览器渲染过程
解析html以构建dom树 -> 构建render树(加上css) -> 布局render树 -> 绘制render树
三十三: jQuery工作原理
1)jQuery采用的是构造函数模式进行开发的,jQuery是一个类
2)常用的方法(CSS、属性、筛选、事件、动画)都是定义在jQuery.prototype上的 ->只有jQuery的实例才能使用这些方法
三十四: Sessionid如何生成,由谁产生,保存在哪里?
sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。存放:服务器端的内存中
三十五: Session和Cookie的区别与联系:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
三十六: JSON.parse()与JSON.stringify()的区别
JSON.parse()从一个字符串中解析出json对象
JSON.stringify()从一个对象中解析出字符串
三十七:NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?
NAN:不是数字 类型:number
value!==value 为true就是nan(只有nan才会和自己不相等)
Number.isNaN()
三十八:javascript创建数组时,Array()和[]有什么区别
Array()通过调用数组构造函数生成,可以(8)直接定义数组长度,内存中开辟一个存储空间,比较耗资源
[]通过字面量定义数组,直接在内存中开辟一个存储字段,不耗资源
三十九: 定义函数时用 var foo = function () {} 和 function foo() {}有什么区别?
前者声明了一个变量,这个变量是个方法,是可以改变的
后者声明了一个方法,这个方法名字无法改变
本质变量和方法声明提前的问题
四十:写一个按照下面方式调用都能正常工作的sum方法
console.log(sum(2,3)); //输出Outputs 5
console.log(sum(2)(3)); //输出Outputs 5
function sum() {
var num = arguments[0];
if(arguments.length === 2) {
return arguments[0] + arguments[1]
} else {
return function(sec) {
return num + sec;
}
}
}
四十一:如果一个函数没有返回语句,此函数返回值是什么?
无返回语句返回Undefined
return; 返回null,起到中断方法执行效果
四十二: forEach()和map()的区别
Foreach:没有返回值,遍历数组对每个值进行处理
Map():有返回值,返回值组成一个新的数组