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