1.alert(1&&2),alert(1||0)
具体我不记得了反正就这两个,我以为考的是纯粹的与运算和或运算,后来发现太天真了
1alert(1&&2)的结果是2
2只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
3只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
4
5alert(0||1)的结果是1
6只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
7只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
2.mouseenter和mouseover的区别
这个之前看了下,大概是答出来了,但可能不够详细吧
1不论鼠标指针穿过被选元素或其子元素,都会触发mouseover事件。对应mouseout
2只有在鼠标指针穿过被选元素时,才会触发mouseenter事件。对应mouseleave
3.用正则表达式匹配字符串,以字母开头,后面是数字、字符串或者下划线,长度为9-20
看到这题我是崩溃的,因为正则学的不多,但是稍微写了下也差不多只是忘了些
1varre=newRegExp("^[a-zA-Z][a-zA-Z0-9_]{9,20}$");
4.js字符串两边截取空白的trim的原型方法的实现
1//我的笨方法,当时还想错了一些,回来后实现了一下,思路是这样
2String.prototype.trim=function(){
3vararr=this.split("");
4while(1){
5if(arr[0]==""){
6arr.shift();
7continue;
8}
9break;
10}
11while(1){
12if(arr[arr.length-1]==""){
13arr.pop();
14continue;
15}
16break;
17}
触发repaint:
1color的修改,如color=#ddd;
2text-align的修改,如text-align=center;
3a:hover也会造成重绘。
4:hover引起的颜色等不导致页面回流的style变动。
触发reflow:
1width/height/border/margin/padding的修改,如width=778px;
2动画,:hover等伪类引起的元素表现改动,display=none等造成页面回流;
3appendChild等DOM元素操作;
4font类style的修改;
5background的修改,注意着字面上可能以为是重绘,但是浏览器确实回流了,经过浏览器厂家的优化,部分background的修改只触发repaint,当然IE不用考虑;
6scroll页面,这个不可避免;
7resize页面,桌面版本的进行浏览器大小的缩放,移动端的话,还没玩过能拖动程序,resize程序窗口大小的多窗口操作系统。
8读取元素的属性(这个无法理解,但是技术达人是这么说的,那就把它当做定理吧):读取元素的某些属性(offsetLeft、offsetTop、offsetHeight、offsetWidth、scrollTop/Left/Width/Height、clientTop/Left/Width/Height、getComputedStyle()、currentStyle(inIE));
如何避免:
尽可能在DOM末梢通过改变class来修改元素的style属性:尽可能的减少受影响的DOM元素。
避免设置多项内联样式:使用常用的class的方式进行设置样式,以避免设置样式时访问DOM的低效率。
设置动画元素position属性为fixed或者absolute:由于当前元素从DOM流中独立出来,因此受影响的只有当前元素,元素repaint。
牺牲平滑度满足性能:动画精度太强,会造成更多次的repaint/reflow,牺牲精度,能满足性能的损耗,获取性能和平滑度的平衡。
避免使用table进行布局:table的每个元素的大小以及内容的改动,都会导致整个table进行重新计算,造成大幅度的repaint或者reflow。改用div则可以进行针对性的repaint和避免不必要的reflow。
避免在CSS中使用运算式:学习CSS的时候就知道,这个应该避免,不应该加深到这一层再去了解,因为这个的后果确实非常严重,一旦存在动画性的repaint/reflow,那么每一帧动画都会进行计算,性能消耗不容小觑。