2017阿里前端面试

Array对象常用方法中:

不改变原数组:

1、 concat()

连接两个或多个数组
不改变原数组
返回被连接数组的一个副本
2、join()

把数组中所有元素放入一个字符串
不改变原数组
返回字符串
3、 slice()

从已有的数组中返回选定的元素
不改变原数组
返回一个新数组
4、 toString()

把数组转为字符串
不改变原数组
返回数组的字符串形式

改变原数组:

5、 pop()

删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
改变原数组
返回被删除的元素

6、 push()

向数组末尾添加一个或多个元素
改变原数组
返回新数组的长度
7、 reverse()

颠倒数组中元素的顺序
改变原数组
返回该数组
8、 shift()

把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
改变原数组
返回第一个元素的值
9、 sort()

对数组元素进行排序(ascii)
改变原数组
返回该数组
10、 splice()

从数组中添加/删除项目
改变原数组
返回被删除的元素组成的数组
11、 unshift()

向数组的开头添加一个或多个元素
改变原数组
返回新数组的长度

position: sticky :

以下代码,分别给节点 #box 增加如下样式,问节点 #box 距离 body 的上边距是多少?

<body style=”margin:0;padding:0”>

<div id=”box” style=”top:10px;margin:20px 10px;”>

</div>

</body>

如果设置 position: static ; 则上边距为 px

如果设置 position: relative ; 则上边距为 px

如果设置 position: absolute ; 则上边距为 px

如果设置 position: sticky ; 则滚动起来上边距为 px

position属性(sticky)

  • position: static ; 则上边距为( 20 ) px 静态定位 top值无效
  • position: relative ; 则上边距为( 30 ) px 移动的时候会包括margin
  • position: absolute ; 则上边距为( 30 ) px 移动的时候会包括margin
  • position: fixed ; 则上边距为( 30 ) px 固定定位的margin也会生效 移动的时候也会包括margin
  • position: sticky ; 则上边距为( 20 ) px,页面滚动起来为(10)px,margin会无效;页面没滚动的时候是静态定位

HTTP 2.0 协议详解

https://blog.csdn.net/zqjflash/article/details/50179235

我们需要实现动态加载一个 JavaScript 资源,但是有几处不知道如何处理,需要您的帮助完成这一项工作

var script = document.createElement(“script”);

var head = document.getElementsByTagName(“head”)[0];


script.type = “text/javascript”;

script.src =//i.alicdn.com/resource.js”;


// 绑定资源加载成功事件
// onreadystatechange
script.onreadystatechange = function( ){

// 判断资源加载状态是否为加载成功或加载完成
//  /^(loaded|complete)$/
// readyState
if( /^(loaded|complete)$/.test (script.readyState  )  ) {

script.onreadystatechange = null;

. . . .

}

};


// 绑定资源加载失败事件
// onerror 
script.onerror = function( ) {

. . . .

};


head.insertBefore (script , head.firstChild)

script元素的onload,onreadystatechange事件

IE的 script 元素支持onreadystatechange事件,不支持onload事件。

FF的script 元素不支持onreadystatechange事件,只支持onload事件。

this.readyState的值为’loaded’或者’complete’都可以表示这个script已经加载完成.

如何结合IE和FF的区别?参考一下jquery的源码:

var script = document_createElement_x('script');

script.src="xx.js";

script.onload = script.onreadystatechange = function(){
     if(  ! this.readyState     //这是FF的判断语句,因为ff下没有readyState这人值,IE的readyState肯定有值

          || this.readyState=='loaded' || this.readyState=='complete'   // 这是IE的判断语句

    ){
          alert('loaded');

    }

};

script标签的defer属性和async属性

  • defer 这个属性的用途是表明脚本在执行时不会影响页
    面的构造。也就是说,相当于告诉浏览器立即下载,但延迟执行。脚本会被延迟到整个页面都解析完毕后再运行。支持HTML5 的实现会忽略给嵌入脚本设置的 defer 属性,HTML5 规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于 DOMContentLoaded 事件。
  • async 异步脚本一定会在页面的 load 事件前执行,但可能会在 DOMContentLoaded 事件触发之前或之后执行。

defer和async在网络加载过程是一致的,都是异步执行的;
如果存在多个有defer属性的脚本,那么它们是按照加载顺序执行脚本的;而对于async,它的加载和执行是紧紧挨着的,无论声明顺序如何,只要加载完成就立刻执行,它对于应用脚本用处不大,因为它完全不考虑依赖。

DOMContentLoaded和load的区别

在这里插入图片描述
https://www.cnblogs.com/caizhenbo/p/6679478.html
https://www.cnblogs.com/gg-qq/p/11327972.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值