1.[1]==[1] false 引用类型不能用等于
2.stringObject=new String(),判断stringObject类型是否为String 用typeof stringObject == 'string'
typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined。
a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假 instanceof 用于判断一个变量是否某个对象的实例,如 var a=new Array();alert(a instanceof Array); 会返回 true
3.正则表达式匹配^w+[^d]+$ 注意 w d是迷惑行为 不是\w \d
4.js基本数据类型
5.css3新增属性
6.js中什么类型是引用传递,什么类型是值传递?如何将值类型的变量以引用的方式传递?
function changeStuff(a,b,c){
a=a*10;
b.item="changed";
c={item:"unchanged"};
}
var num=10;
var obj1={item:"unchanged"};
var obj2={item:"unchanged"};
changeStuff(num,obj1,obj2);
console.log(num); //10
console.log(obj1.item)//changed
console.log(obj2.item)//unchanged
7.请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能含有多个),返回值是一个包含被删除的重复条目的新数组
Array.prototype.distinct = function() {
var ret = [];
for (var i = 0; i < this.length; i++)
{
for (var j = i+1; j < this.length;) {
if (this[i] === this[j]) {
ret.push(this.splice(j, 1)[0]); //splice返回数组,这样是把数组存到了另一个数组里面,即数组元素是数组
} else {
j++;
}
}
}
return ret;
}
//for test
var arr = ['a','b','c','d','b','a','e'];
console.log(arr.distinct());//[ 'a', 'b' ]
console.log(arr);//[ 'a', 'b', 'c', 'd', 'e' ]
8.填充代码,使mySort()能使传入的参数按照从小到大的顺序显示出来
function mySort() {
var tags = new Array();
for(var i = 0;i < arguments.length;i++) {
tags.push(arguments[i]); //sort是比较字符串 字符串变成数组
}
tags.sort(function(compare1,compare2) {
return compare1- compare2;
});
return tags;
}
var result = mySort(50,11,16,32,24,99,57,100);
console.info(result); //Array(8) (8) [11, 16, 24, 32, 50, 57, 99, 100]
9.闭包原理,案例?
function add() {
let a = 1;
console.log(a); // 1
}
console.log(a); // ReferenceError: a is not defined a
在 add() 函数的作用域内,能够访问,离开作用域后,就无法访问了
闭包是指有权访问另一函数作用域中的变量的函数。
function foo() {
var a = 10;
function bar() {
a *= 2;
return a;
}
return bar;
}
var baz = foo(); // baz is now a reference to function bar.
console.log(baz()); // returns 20.
console.log(baz()); // returns 40.
console.log(baz()); // returns 80.
var blat = foo(); // blat is another reference to bar.
console.log(blat()); // returns 20, because a new copy of a is being used.
function outerFunc(){
var b = 0; //局部变量
function innerFunc(){ //声明内部函数
b++; //访问外部函数的局部变量
console.log("内部函数中b="+b);
}
return innerFunc;//返回内部函数
}
var func = outerFunc();//① 通过外部变量引用函数返回的内部函数
console.log(func);//② 输出内部函数定义代码
func();//③ 通过闭包访问局部变量b,此时b=1
console.log("外部函数中b=" + b);//④ 出错,报引用错误
优点:可以读取函数内部的变量;可以让这些局部变量保存在内存中,实现变量数据共享
缺点:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除
10.写原型 原型链 继承案例 讲原理
11箭头函数
12promise理解
13http和https理解,详细解释ssl
Http是基于TCP/IP协议的应用程序协议,不包括数据包的传输,主要规定了客户端和服务器的通信格式,默认使用80端口
Https协议是以安全为目标的Http通道,简单来说就是Http的安全版;SSL是Https协议的安全基础。Https默认端口号为443
SSL/TLS协议基本思路是采用公钥加密法(最有名的是RSA加密算法)。大概流程是,客户端向服务器索要公钥,然后用公钥加密信息,服务器收到密文,用自己的私钥解密
(客户端给出协议版本号、一个客户端随机数A(Client random)以及客户端支持的加密方式
服务端确认双方使用的加密方式,并给出数字证书、一个服务器生成的随机数B(Server random)
客户端确认数字证书有效,生成一个新的随机数C(Pre-master-secret),使用证书中的公钥对C加密,发送给服务端
服务端使用自己的私钥解密出C
客户端和服务器根据约定的加密方法,使用三个随机数ABC,生成对话秘钥,之后的通信都用这个对话秘钥进行加密。)
Http和Https的区别如下:
https协议需要到CA申请证书,大多数情况下需要一定费用
Http是超文本传输协议,信息采用明文传输,Https则是具有安全性SSL加密传输协议
Http和Https端口号不一样,Http是80端口,Https是443端口
Http连接是无状态的,而Https采用Http+SSL构建可进行加密传输、身份认证的网络协议,更安全。
Http协议建立连接的过程比Https协议快。因为Https除了Tcp三次握手,还要经过SSL握手。连接建立之后数据传输速度,二者无明显区别
14 http态码的理解,详细对应什么?
http各个状态码的含义:由三位数字组成,第一位定义了状态码的类型
2开头:(请求成功)表示成功处理了请求的状态代码
200:(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201:(已创建)请求成功并且服务器创建了新的资源
202:(已接受)服务器已接受请求,但尚未处理
203:(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一资源。
204:(无内容)服务器成功处理了请求,但没有返回任何内容
205:(重置内容)服务器成功处理了请求,但没有返回任何内容
206:(部分内容)服务器成功处理了部分 GET 请求
3开头:(请求被重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向
300:(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择
301:(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新的位置
302:(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
303:(查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码
304:(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应,不会返回网页内容
305:(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理
307:(临时重定向)服务器目前从不同位置的网页响应请求,但请求者继续使用原有位置来进行以后的请求
4开头:(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理
400:(错误请求)服务器不理解请求的语法
401:(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应
403:(禁止)服务器拒绝请求
404:(未找到)服务器找不到请求的网页
405:(方法禁用)禁用请求中指定的方法
406:(不接受)无法使用请求的内容特性响应请求的网页
407:(需要代理授权)此状态代码与 401 (未授权)类似,但指定请求者应当授权使用代理
408:(请求超时)服务器等候请求时发生超时
409:(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息
410:(已删除)如果请求的资源已永久删除,服务器就会返回此响应
411:(需要有效长度)服务器不接受不含有效内容长度标头字段的请求
412:(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件
413:(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
414:(请求的 URI 过长)请求的URI(通常为网址)过长,服务器无法处理
415:(不支持的媒体类型)请求的格式不受请求页面的支持
416:(请求范围不符合)如果页面无法提供请求的范围,则服务器返回此状态代码
417:(未满足期望值)服务器未满足“期望”请求标头字段要求
5开头:(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
500:(服务器内部错误)服务器遇到错误,无法完成请求
501:(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
502:(错误网关)服务器作为网关或代理,从上游服务器收到无效响应
503:(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态
504:(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求
505:(HTTP 版本不受支持)服务器不支持请求中所用的 HTTP 协议版本
15重定向