2/27
1. 单选:以下关于CSS选择器说法错误的是:
a. 类选择器优先级高于标签选择器
b. a[title~=foo]是写法正确的选择器
c. 页面仅定义了p { font-size: 20px; },那么p > a字号也是20px
d. h1 + p可用于匹配h1和p元素
e. button#large优先级高于button.large
f. div ~ p:first-child是写法正确的选择器
(d)
-
(a)类选择器优先级高于标签选择器
-
(d)h1 + p 选择紧接在 <h1> 元素之后的所有 <p> 元素
CSS选择器
-
div>p
:选择父元素为 <div> 元素的所有 <p> 元素 -
div+p
:选择紧接在 <div> 元素之后的所有 <p> 元素 -
p~ul
:选择前面有 <p> 元素的每个 <ul> 元素 -
[target]
:选择带有 target 属性所有元素
target="_blank"
属性会在点击链接时打开新的标签页
<a href="http://www.disney.com" target="_blank">disney.com</a>
[target]
{
background-color:yellow;
}
-
[title~=flower]
:选择 title 属性包含单词 "flower" 的所有元素
title
属性 会在鼠标悬浮于图片之上时显示文字
<img src="/i/eg_tulip.jpg" title="tulip flower" />
-
[lang|=en]
:选择 lang 属性值以 "en" 开头的所有元素
<p lang="en-us">Hi!</p>
2. 不定选项:关于 es6 编程,以下说法正确的是
a. 不要使用 var,建议优先使用 let
b. [a, b] = [b, a]; 可以用于变量交换
c. { ...x } 相当于对 x 做 for in 操作, [ ...x ] 相当于对 x 做 for of 操作
d. 尽可能地使用箭头函数代替 .bind/_self/that 等针对 this 的操作
e. 严格模式下,不可使用 func.arguments 与 func.caller 属性
f. Symbol 仅为了消除 “魔术字符串“
(b,d,e)
- (b): [a, b] = [b, a]; 可以用于变量交换;解构操作
- (c):for in 不会遍历 Symbol 属性,而 { ...x } 会
let arr = [1,2,3]
for( let i in arr){console.log(i)} // 0,1,2
for( let i of arr){console.log(i)} //1,2,3
- (e):arguments,caller,callee
arguments
"use strict";
function func(name,age){console.log(arguments);}
func("mike",16)
-
arguments.callee
:返回正在执行的函数本身的引用;但严格模式下报错
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
-
caller
:保存着调用当前的函数的函数引用;如上所示,严格模式下报错
- (f)Symbol 消除魔术字符串
const shapeType = {
triangle: Symbol() //属性对应的值是什么并不重要,但不与其他属性的值相同
};
3. 开放题:你如何看待小程序的发展?它有什么优势和劣势?以及未来的走向。
我个人挺喜欢小程序的,在一些“用完即走”的场景下 小程序 比 APP 方便得多,张小龙先生对小程序也是这样说的,“用完即走”,小程序 小 却 便利。
那么它的优势 就是 方便,轻便,无需下载;劣势是用户留存度差,而且体验不如原生 APP。未来的走向我觉得还是小程序还是要针对单一场景,做到小而轻便,比如之前比赛的时候看到的2017届的腾讯小程序比赛的冠军:一款清华校园旅游预约的小程序;真的就是小却轻便,遇到这种场景大家拿来就能用。
当然,目前又兴起了一些新技术,比如 PWA,浏览器上的传统网页也能拿来当 APP 用,我想也可以和小程序竞争。
网友评论