V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
smilingsun
V2EX  ›  问与答

关于 js 的优势,这句话有什么不严谨的地方吗

  •  
  •   smilingsun · 2019-01-19 09:58:36 +08:00 · 2280 次点击
    这是一个创建于 2137 天前的主题,其中的信息可能已经有所发展或是发生改变。

    JavaScript 的优势,它的 language runtime 是单线程的,异步靠的是 event loop,而不用开发者操心多线程。就比如写爬虫,如果要并发地爬,Python 或者 Java 大概率需要 developer 开线程池自己维护,js 的话只需要 callback 就好了

    8 条回复    2019-01-19 12:14:32 +08:00
    gam2046
        1
    gam2046  
       2019-01-19 10:43:35 +08:00
    这真的是优势嘛,我感觉是个吭呢。(当然,我自己很菜)

    event loop 并不是多线程,本质上依旧是单线程,当然现在有些 JavaScript Runtime 有提供 worker-thread,那就是真多线程了,但这 JavaScript 是不可控的。

    不论是 promise 还是回调地狱,在多次嵌套的情况下,都是噩梦。

    await/async 的出现,我感觉更像是向传统静态语言靠近
    kindjeff
        2
    kindjeff  
       2019-01-19 10:51:59 +08:00   ❤️ 7
    JavaScript 的优点是可以写任何东西,缺点是你真的会用它去写这些东西
    giuem
        3
    giuem  
       2019-01-19 10:56:56 +08:00 via iPhone
    js 代码的执行确实是单线程的,但是网络 io,文件 io 这些是在不同的线程中

    可以看一下这篇文章 http://liyangready.github.io/2015/08/14/nodejs%E7%9C%9F%E7%9A%84%E6%98%AF%E5%8D%95%E7%BA%BF%E7%A8%8B%E5%90%97%EF%BC%9F/
    congeec
        4
    congeec  
       2019-01-19 11:35:01 +08:00 via iPhone
    单线程异步哪个语言做不到?
    callback 是优势?
    qdwang
        5
    qdwang  
       2019-01-19 11:38:46 +08:00
    js 的唯一优势在于,易学,会的人多。
    passerbytiny
        6
    passerbytiny  
       2019-01-19 11:57:54 +08:00
    教育不好误人子弟。Java 线程池,如果你只想无脑的用,那么不超过 10 行代码就能完事。
    lhx2008
        7
    lhx2008  
       2019-01-19 12:03:21 +08:00 via Android
    真的不要再说 js 是单线程了好吗,nodejs 早就有 eventloop 多线程模式,只是说浏览器里面可能单线程比较合适。更别说 IO 操作本来就另有线程池。而且要解决的多线程问题一点没有比传统语言少。
    Wincer
        8
    Wincer  
       2019-01-19 12:14:32 +08:00 via Android
    Python 和 Java 现在都有异步库了,再说了 callback 明明是最为人诟病的一点,怎么还成被描述成“只需要”,听得像是优势一样。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:04 · PVG 22:04 · LAX 06:04 · JFK 09:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.