哈, 我觉得这道题拿来做面试题不错

2018-05-24 21:51:50 +08:00
 fulvaz

加班准备走...

在 twitter 上看到了个有意思的问题

我觉得如果有人说自己熟悉 es6 的话, 可以用这个来打脸

    let x = 0;
    async function test() {
        x += await 2;
        console.log(x)
    };
    test();
    x+=1;
    console.log(x);

这里输出了什么? 又是为什么呢?

答案:

https://www.youtube.com/watch?time_continue=278&v=bfxglBVSNDI

ps: 用这种题目做面试题估计又会被人说是造火箭吧. 我倒是觉得面试造火箭没啥错, 万一哪天在拧火箭的螺丝呢?

原文: https://twitter.com/jaffathecake/status/999269332889763840

9005 次点击
所在节点    JavaScript
49 条回复
ericls
2018-05-24 22:05:26 +08:00
这个当面试题? 你为啥不问茴香豆的几种写法?
shuizhengqi
2018-05-24 22:15:03 +08:00
@ericls 4 种
menc
2018-05-24 22:16:01 +08:00
@ericls 茴 ,回,囘,囬,
whileFalse
2018-05-24 22:17:19 +08:00
谁要写出这样的代码,并且用它的特性正确地实现了想要的功能,


就地打死
ericls
2018-05-24 22:18:13 +08:00
@menc 这题你就答错了 你每一个都少了 香豆 两个字
yu099
2018-05-24 22:20:17 +08:00
绝对打回去重写
murmur
2018-05-24 22:35:38 +08:00
写这种代码的人建议枪毙 15 分钟
odirus
2018-05-24 22:36:39 +08:00
@ericls #5
chairuosen
2018-05-24 22:53:27 +08:00
这个问题换个问法可能会合适一些。“我告诉你输出是 1,2,你来分析为什么。”
问输出什么,好像在考你知不知道这个坑,不知道的永远不知道,我知道所以你 Low ?
问为什么输出这个,是在考解决问题的能力,即使没有踩过这个坑,也能靠自己能力分析出来。
fulvaz
2018-05-24 23:17:57 +08:00
@ericls
@shuizhengqi
@whileFalse
@yu099
@murmur
@chairuosen

楼上的各位, 如果你们认真看了视频, 或者直接拉到最后, 你会发现这是现实中存在的问题, 而不是 js 游戏
yangbin9317
2018-05-25 01:25:45 +08:00
其实我有点奇怪竟然有人会不知道答案
bobsam
2018-05-25 02:12:33 +08:00
实际中不会有这种代码的,这主要是考察 async,await 的知识点,还有异步调用。答不出没关系,这只是说明你基础不扎实,那既然这样我就换个知识点考察。如果答出来了,我就会问你实际应用时,这种情况会是怎样,我会要求你说出一个实际例子了。因为你了解知识点,但是你没应用,那也只是靠背,没啥意思。
ericls
2018-05-25 03:13:54 +08:00
@fulvaz 参考 10 楼

或者换一个问法 告诉输出的前提下 给你 2 分钟时间 不限方式 搞明白为什么

能力不是给你一堆代码 让你给出结果 而是给你输入 给你输出 让你实现 还有在过程中 可能有输出和预期有差别的时候 怎么 debug 怎么搞明白为什么
murmur
2018-05-25 08:28:38 +08:00
@fulvaz 直接拉到最后作者说了一句不要把异步和同步混用
然后再回到那个真的问题,也就是所谓的计算目录文件大小
首先所有的 file 方法都有 sync 的,这样就避免了 sync 和 async 混用的问题
然后学的不多的,或者不喜欢语法糖的,会用 promise.all->then 或者 promise 数组 reduce 执行,这样也不存在例子里的问题
这个题最恶心之处是他考的 JS 奇葩的执行方式,x += await 2;这句的 2 在 await,即便是没用过 await 的也能猜出跟 timeout 一个套路的考题,但是这个题更恶心之处在于 2 在 await,但是 x 不会重新执行
murmur
2018-05-25 08:35:35 +08:00
另外就视频里的那个问题
生产怎么解决?
本着 npm 万能和不造轮子的原则
google 输入 npm directory size
我发现第一个是 get-folder-size 周下载 1w 多 最近还在更新
问题完美解决
就是这样
node 生态发展这么多年 当你一个很简单很普通跟业务不搭边能用语言描述出来的需求 一定有人造了轮子 而且比你的语法糖更好
SergeGao
2018-05-25 09:38:26 +08:00
async 是 es2017 标准,所以应该不算 es6 吧?
notreami
2018-05-25 09:52:17 +08:00
后端菜鸟觉得应该是
1
1
murmur
2018-05-25 09:57:32 +08:00
@SergeGao 2016 年,3 阶段草稿是应该算 es2017 吧
不过对于前端来说只要 babel 能搞定的都叫 es6...实际上是这样的..多新的特性都有人往生产上用
zj299792458
2018-05-25 10:00:04 +08:00
es6 是啥,看不懂……
lauix
2018-05-25 10:17:13 +08:00
第一想法 是 1,2。第二个想法是 1,3。 看了下答案,我第二想法貌似是正确的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/457568

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX