Web前端开发测试题阅读笔记
引自:
http://www.w3cplus.com/css/front-end-web-development-quiz.html
Q7:下面代码弹出值是什么?
x = 1; function bar() { this.x = 2; return x; } var foo = new bar(); alert(foo.x);
答:2
这里主要问题是最外面x的定义,试试把x=1改成x={},结果会不同的。这是为什么呢?在把函数当作构造器使用的时候,如果手动返回了一个值,要看这个值是否简单类型,如果是,等同于不写返回,如果不是简单类型,得到的就是手动返回的值。如果,不手动写返回值,就会默认从原型创建一个对象用于返回。
注:如果改成x={},alert值为undefined。
Q11: 下面代码弹出值是什么?
function foo(a) { arguments[0] = 2; alert(a); } foo(1);
答:2
实参可以直接从arguments数组中修改。
注:即使实参不是简单类型,也会被修改。
Q14: "Sausage"文本的颜色是什么?
#awesome .favorite:not(#awesome) .highlight { color: red; } #awesome .favorite .highlight:nth-of-type(1):nth-last-of-type(1) { color: blue; }
<ul class="shopping-list" id="awesome"> <li><span>Milk</span></li> <li class="favorite" id="must-buy"><span class="highlight">Sausage</span></li> </ul>
答:红色
对于选择器中给定的各个ID属性值,加“0,1,0,0”。 对于选择器中给定的各个类属性值,属性选择或伪类,加"0,0,1,0"。 对于选择器中给定的各个元素为伪元素,加“0,0,0,1”。 结合符和通配符“*”以及":not()"没有任何的加分权。 对于行内样式,加为“1,0,0,0” 对于"!important"加分高于上面的一切,将变成“1,0,0,0,0” CSS3 中,虽然:not()否定伪类本身不作为权重计数(b),但是:not()中的选择器依然参与权重的计算,也就是说.demo:not(#foo)实际的权重为1,1,0,.demo:not(.foo) 的权重则为0,2,0。
伪类与伪元素的区别参考这里
Q19: 页面加载完毕后,浏览器会下载"mypic.jpg"图片吗?
<div id="test1"> <span id="test2"></span> </div>
#test1 { display: none; } #test2 { background-image: url('mypic.jpg'); }
答:不会
注:
img标签的src,不论img为 visibility:hidden; 还是 display:none; ,都会加载
css中,如果父元素#test1为 display:none; ,子元素#test2的 background-image 不会被加载;
如果父元素#test1显示或 visibility:hidden; ,子元素#test2的 background-image 都会被加载;
不论父元素#test1设置何样式,它本身的 background-image 都会被加载