撩课-Web大前端每天5道面试题-Day6

1.请说明ECMAScript, JavaScript, Jscript之间的关系?

ECMAScript提供脚本语言必须遵守的规则、
细节和准则,是脚本语言的规范。
比如:ES5,ES6就是具体的一js版本。

JavaScript是ECMAScript的一个分支版本, 
JavaScript 实现了多数 ECMA-262 中
描述的 ECMAScript 规范,但存在少数差异。 

JScript是微软公司对ECMA-262语言规范的
一种实现,除了少数例外(这是为了保持向后兼容 ),
微软公司宣称JScript完全实现了ECMA标准.

关系:
JavaScript和JScript都是ECMAScript的版本分支, 
二者在语法上没有多大的区别; 只不过一个是
NetScape公司的, 一个是微软的; IE系列默认是
JScript, 其它的则反之用JavaScript。

 

2. 页面加载过程中可能触发哪些事件? 它们的顺序是?

页面加载时,大致可以分为以下几个步骤:
1)  开始解析HTML文档结构
2)  加载外部样式表及JavaScript脚本
3)  解析执行JavaScript脚本
4)  DOM树渲染完成
5)  加载未完成的外部资源(如 图片)
6)  页面加载成功

执行顺序:
1)  document readystatechange事件
2)  document DOMContentLoaded事件 
3)  window load事件

 

3. 函数中在声明变量a前使用a会产生错误吗? 为什么?

不会, JS中能够进行变量作用域提升, 
把所有变量、函数的声明提升到当前
作用域的最前面, 但不进行赋值操作;

所以可能造成获取的值是undefined。

 

4. 什么是hash, 以及hashchange事件?

先了解下什么是hash:

hash即URL中"#"字符后面的部分。

a) 使用浏览器访问网页时,
如果网页URL中带有hash,
页面就会定位到id(或name)
与hash值一样的元素的位置;

b) hash还有另一个特点,
它的改变不会导致页面重新加载;

c) hash值浏览器是不会随请求发送到服务器端的;

d) 通过window.location.hash属性获取和设置hash值。

window.location.hash值的变化会直接
反应到浏览器地址栏(#后面的部分会发生变化),
同时,浏览器地址栏hash值的变化也会触发
window.location.hash值的变化,
从而触发onhashchange事件。

再来了解下什么是hashchange事件:

a) 当URL的片段标识符更改时,
将触发hashchange事件
(跟在#符号后面的URL部分,包括#符号)

b) hashchange事件触发时,
事件对象会有hash改变前的URL
(oldURL)和hash改变后的URL
(newURL)两个属性。

 

5. 什么是CDN, CDN对于网站有什么意义, 它有什么样的缺点?

CDN又称为内容分发网络;  本意在于
尽可能避开互联网上有可能影响数据
传输速度和稳定性的瓶颈和环节,
使内容传输的更快、更稳定。

主要目的:

解决因分布、带宽、服务器性能带来的访问延迟问题,
适用于站点加速、点播、直播等场景。

使用户可就近取得所需内容,解决 Internet网络拥挤的状况,
提高用户访问网站的响应速度和成功率。

缺点:
a) 实施复杂 , 投资大;

b) 目前大部分的CDN还只是对静态内容加速,
对动态加速效果不好;
而双线对动态加速的效果跟静态是一样的。

 

posted @ 2018-12-07 09:43  撩课学院  阅读(324)  评论(0编辑  收藏  举报