笔试第一题, ul 下面 5 个 li, 需要实现点击 li 时打印 li 的 data-content
有看着不会下手的
有解答如:
let a1 = document.querySelector("ul li:first-child")
a1.addEventListener(...)
let a2 = document.querySelector("ul li:nth-of-type(2)")
a2.addEventListener(...)
// ...
到公司面试的人, 答得最好的是下面这个:
const list = document.querySelectorAll("li")
for (let i of list) {
i.addEventListener(...)
}
笔试题可以不动手写, 简单讲一讲思路就行, 一个 PascalCase to kebab-case 字符串转换函数(所有题目里难度次高的一道题), 有一位面试者没做, 我就简单问了问思路, 说到判断一个字符是不是大写字符, 其实平常肯定不会问这么 xx 的问题的, 但是我突发奇想, 就问了一嘴, "那怎么判断它是不是大写字符呢?", 然后他想了一会之后说, 这个问题我牵涉的比较少, 然后我就只能 "行, 那我们看下一题吧"...
在这儿要跟一位不知名 V 友说声抱歉, 其实他远程笔试答得还是很好的, 但是因为一些其他客观原因, 被 hr 否了
1
ReputationZh 2021-03-22 18:28:49 +08:00
……我也想知道在前端里,如何判断大写字母,难道用正则?
|
2
pangbeilei 2021-03-22 19:04:10 +08:00
想知道被否的那位客观原因指的哪方面的?
|
3
noe132 2021-03-22 20:51:32 +08:00 via Android
@ReputationZh 正则[A-Z],判断 charcode,甚至可以直接 letter >= 'A' && letter <= 'Z'
|
4
xiaoming1992 OP @ReputationZh 其实在 replace 方法里使用正则 A-Z,根本不需要额外判断了,他说判断,我才问他怎么判断。可以获取 ascii 值判断范围,可以直接使用大于号小于号,甚至直接 [A, B, C,...].includes() 都算对
@pangbeilei 我的问题,第一次发布招聘贴没经验,等那位兄弟发过简历,hr 跟他联系之后跟我说,外地的不太合适。我一方面没有考虑到会有外地的投,一方面没有考虑到公司会不喜欢外地的,所以感觉很抱歉 |
5
aaniao002 2021-03-23 19:31:39 +08:00 via Android
我觉得看公司吧,如果要招来自己培养,会简单的 javascript 就好,要厉害点的,可以试试 www.caniuse.com 上面抽几个常用 js function 和 css 考浏览器支持情况。再顶尖的请直接发设计稿。
|
6
xiaoming1992 OP @aaniao002 其实我们的要求已经一再降低了(毕竟薪资也不多。。。),只要基础的 js 过得去就行,可问题是来的一大半,连一句完整合法的 js 语法都写不出来,一个个经验都是两三年的。。。行,你这两年只用 vue,忘了 js 的语法,那你把他当成 vue,大致讲讲思路吧,思路也讲不出来。。。
|
7
cyrbuzz 2021-03-24 16:19:14 +08:00
```
const list = document.querySelectorAll("li") for (let i of list) { i.addEventListener(...) } ``` 这个有啥不好吗,除了没限定 ul? 当然也可以给 ul 加事件判断冒泡的发起元素,这样只需要监听一次点击事件。 |
8
xiaoming1992 OP @cyrbuzz 肯定要搞一下事件委托啊。其实他们这样写,我都会问一句,"那如果我 li 很多,需要绑定很多次事件,能怎么样优化一下吗"。我感觉前端看到这样的题目,本能就会想到事件委托吧,难道我想错了?
|
9
mayliya 2021-03-27 14:06:46 +08:00
我突然有点自信了
|
10
KouShuiYu 2021-04-08 18:08:35 +08:00
```js
document.querySelector('ul').addEventListener('click', (event)=>{ console.log(event.target.innerText) }); ``` |