一:null和undefined的区别?
1:null是一个表示”无”的对象,转为数值时为0;
2:undefined是一个表示”无”的原始值,转为数值时为NaN。
3:当声明的变量还未被初始化时,变量的默认值为undefined。
4:null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义,用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null表示”没有对象”,即该处不应该有值,用法:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
二:new操作符具体干了什么呢?
1、创建一个对象,并且this变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到this引用的对象中。
3、新创建的对象由this所引用,并且最后隐式的返回this。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
三:IE 与其他浏览器不一样的一些特性?
1:IE支持currentStyle,FIrefox使用getComputStyle
2:IE 使用innerText,Firefox使用textContent
3:滤镜方面:IE:filter:alpha(opacity= num);Firefox:-moz-opacity:num
4:事件方面:IE:attachEvent:火狐是addEventListener
5:鼠标位置:IE是event.clientX;火狐是event.pageX
6:IE使用event.srcElement;Firefox使用event.target
7:IE中消除list的原点仅需margin:0即可达到最终效果;FIrefox需要设置margin:0;padding:0以及list-style:none
8:CSS圆角:ie7以下不支持圆角
四:一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
分为4个步骤: (1),当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对应的IP地址。
(2), 浏览器与远程`Web`服务器通过TCP三次握手协商来建立一个TCP/IP连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。 (3),一旦TCP/IP连接建立,浏览器会通过该连接向远程服务器发送HTTP的GET请求。远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。
(4),此时,Web服务器提供资源服务,客户端开始下载资源。请求返回后,便进入了我们关注的前端模块简单来说,浏览器会解析HTML生成DOM Tree,其次会根据CSS生成CSS Rule Tree,而javascript又可以根据DOM API操作DOM
五:异步加载和延迟加载
异步加载:
1:动态插入script标签
2.通过ajax去获取js代码,然后通过eval执行
3.script标签上添加defer或者async属性
4.创建并插入iframe,让它异步执行js
延迟加载:
1:有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的。setTimeout()
六:请解释一下 JavaScript 的同源策略。
概念:
同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。其目的是防止某个文档或脚本从多个不同源装载。
这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。
指一段脚本只能读取来自同一来源的窗口和文档的属性。
七:为什么要有同源限制?
我们举例说明:比如一个黑客程序,他利用Iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript读取到你的表单中input中的内容,这样用户名,密码就轻松到手了。
八:同源策略的缺点:
现在网站的JS都会进行压缩,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被merge后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节。