新手咋地

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1. 以下代码执行后的输出是 ( 2 )
    var arr = []; arr[0] = 0; arr[1] = 1; arr.foo = 'c'; console.log(arr.length);

数组本身就是对象,我们可以对他进行一种模式的数据存储,但除此之外她依然是一个对象
var arr = ['1','2']
这本质上是一系列的操作,得到了一个数组对象,调用了他的数组方法,存储了一些数据,arr.length根据存入数据的目录被修改
arr.length,对数组对象的length属性进行一个访问
arr.foo='hello' 对arr对象创建了一个属性,所以.foo与.length地位是并列的,就是arr的一个属性,所以arr的数组方法跟这些属性是毫不相关的

  1. 语句 var arr =[a,b,c,d]执行后,数组arr中每项都是一个整数,下面得到最大整数语句的正确的是哪几项(BCD)
    A Math.max(arr)
    B Math.max(arr[0],arr[1],arr[2],arr[3])
    C Math.max.call(Math,arr[0],arr[1],arr[2],arr[3])
    D Math.max.apply(Math,arr)
    Math.max可用于找出参数中最大值,但不能传入数组作为参数,所以A错B对。apply和call第一个参数为this指向,apply的第二个参数为一个数组,数组成员作为前面方法的参数,call第一个参数后面的参数为前面的方法的参数所以CD都对

  2. 以下哪些操作会触发Reflow
    var obj = document.getElementById("test");
    A alert(obj.className)
    B alert(obj.offsetHeight)
    C obj.style.height = "100px"
    D obj.style.color = "red"

relow(回流)和repaint(重绘)
简要:整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘)会大大影响web性能,尤其是手机页面。因此我们在页面设计的时候要尽量减少reflow和repaint。
reflow:例如某个子元素样式发生改变,直接影响到了其父元素以及往上追溯很多祖先元素(包括兄弟元素),这个时候浏览器要重新去渲染这个子元素相关联的所有元素的过程称为回流。
reflow:几乎是无法避免的。现在的界面上流行的一些效果,比如梳妆目录的折叠,展开(实际上就是元素的显示与隐藏)都将引起浏览器上的reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。通常我们都无法预估浏览器到底会reflow哪一部分的代码,它们都彼此相互影响着。
repaint:如果只是改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint(重绘)。repaint的速度明显快于reflow
下面情况会导致reflow发生
1:改变窗口大小
2:改变文字大小
3:内容的改变,如用户在输入框中敲字
4:激活伪类,如:hover
5:操作class属性
6:脚本操作DOM
7:计算offsetWidth和offsetHeight8:设置style属性

其中B计算了offsetHeight,C重新设置了高度
A打印出类名,无影响 D重新设置了背景,引起重绘

如果不给cookie设置过期时间会(在浏览器会话结束时过期);

以下哪个选项的描述是错误的(D)
A iframe是用来在网页中插入第三方页面,早期的页面使用iframe主要是用于导航栏这种很多页面都相同的部分,这样在切换页面的时候避免重复下载
B iframe的创建比一般的DOM元素慢了1-2个数量级
C iframe标签会阻塞页面的的加载
D iframe本质是动态语言的Incude机制和利用ajax动态填充内容

局限
1、创建比一般的DOM元素慢了1-2个数量级
iframe 的创建比其它包括scripts和css的DOM元素的创建慢了1-2个数量级,使用iframe的页面一般不会包含太多iframe,所以创建DOM节点所花费的时间不会占很大的比重。.但带来一些其它的问题:onload事件以及连接池(connection pool)
2、阻塞页面加载
及时触发window的onload 事件是非常重要的。 onload事件触发使浏览蕾的“忙”指示器停止,告诉用户当前网页已经加载完毕。当onload事件加载延迟后,它给用户的感觉就是这个网页非常慢。window的onload事件需要在所有iframe加载完毕后(包含里面的元素)才会触发。在Safari和Chrome里,通过JavaScript动态设置iframe 的 SRC可以避免这种阻塞情况
3、唯一的连接池
浏览器只能开少量的连接到web 服务器。比较老的浏览器,包含Internet Explorer 6 &7和 Firefox 2,只能对一个域名(hostname)同时打开两个连接。这个数量的限制在新版本的浏览器中有所提高。Safari 3+和Opera 9+可同时对一个域名打开4个连接,Chrome 1+,lE8以及Firefox3可以同时打开6个
绝大部分浏览器,主页面和其中的iframe是共享这些连接的。这意味着iframe在加载资源时可能用光了所有的可用连接,从而阻塞了主页面资源的加载。如果iframe 中的内容比主页面的内容更重要,这当然是很好的。但通常情况下, iframe里的内容是没有主页面的内容重要的。这时iframe中用光了可用的连接就是不值得的了。一种解决办法是,在主页面上重要的元素加载完毕后,再动态设置 iframe 的 SRC。
4、不利于SEO
搜索引擎的检索程序无法解读iframe。另外,iframe本身不是动态语言,样式和脚本都需要额外导入。综上,iframe应谨慎使用。

posted on 2021-11-17 21:06  新手咋地  阅读(124)  评论(0)    收藏  举报