欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-28 08:22:46
1.请说明ECMAScript, JavaScript, Jscript之间的关系? 2. 页面加载过程中可能触发哪些事件? 它们的顺序是? 3. 函数中在声明变量a前使用a会产生错误吗? 为什么? 4. 什么是hash, 以及hashchange事件? 5. 什么是CDN, CDN对于网站有什么意 ......

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还只是对静态内容加速,
对动态加速效果不好;
而双线对动态加速的效果跟静态是一样的。