V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
x97bgt
V2EX  ›  前端开发

学习 js,哪些语法要掌握哪些可以跳过?

  •  
  •   x97bgt · 2022-08-07 21:19:20 +08:00 · 2866 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人没有前端基础。最近想入门看了看 JavaScript ,准备学习 React 。

    感觉 JS 的语法真的好杂,同一种目的有好几种方式能做到,比如设置__proto__就有好几种方式。好不容易看懂了 this 和 prototype ,结果后面看到 class 是个语法糖,帮你处理了这些。

    是不是因为历史遗留,JS 里有很多已经不怎么使用的语法了?

    有老哥能大概点拨一下哪些是重点吗?

    26 条回复    2022-08-09 01:25:12 +08:00
    liuw666
        1
    liuw666  
       2022-08-07 21:32:34 +08:00 via iPhone
    react 里用 ts 和 函数组件,不需要写 this 和 prototype 。 只看 es6 语法就行
    x97bgt
        2
    x97bgt  
    OP
       2022-08-07 21:38:56 +08:00
    @liuw666 哪些是推荐跳过的?
    fox0001
        3
    fox0001  
       2022-08-07 21:56:40 +08:00 via Android   ❤️ 1
    我觉得语言本身没有什么可以跳过,但是可以不用深入了解。比如 prototype (基于原型)是 JavaScript 的类实现原理,这个要起码要知道。

    我反而觉得 JavaScript 的语法很简单。弄懂了 prototype 和 this ,后面哪些都是类库、接口之类的存在了。而且打开浏览器按 F12 就可以编写和运行,很方便。

    至于学习 JavaScript ,我推荐《 JavaScript 权威指南》,俗称“犀牛书”。书很厚,很详细,不用全部看完。对感兴趣或者想深入的内容,再详细阅读即可。另外,`developer.mozilla.org` 可以作为字典去查询,每个类型、方法都有详细说明,并能给出浏览器的兼容情况。

    至于 TypeScript 、React ,没用过。
    anguiao
        4
    anguiao  
       2022-08-07 22:06:54 +08:00   ❤️ 1
    入门为什么要管原型链?不是很理解。
    如果有类 C 语言的编程基础的话,难道不是直接上手开干了么,哪需要专门学习啊。
    Leviathann
        5
    Leviathann  
       2022-08-07 22:12:44 +08:00   ❤️ 1
    只要会数据类型、知道 0 '' false undefined null 都可以是 false 、基础语法比如 ifelse 、集合字面量、对象字面量和属性名简写、解构声明、lambda(这是核心中的核心)、event loop 、Promise 、setTimeout

    还有一些 array 和 object 的 api 包括( Object.keys values entries)
    什么原型链、乱七八糟的 this 大概知道有这么个东西就行了
    本来就是垃圾,react 和 ts 也不鼓励用这些垃圾,几乎都帮你屏蔽了,需要解决相关问题的时候你应该已经对 js 有个整体的把握到时候再翻垃圾桶也不迟
    DOLLOR
        6
    DOLLOR  
       2022-08-07 22:27:04 +08:00
    教程看这个: https://zh.javascript.info/
    文档看这个: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

    __proto__、prototype 这种东西,普通开发者是不需要接触的,现代 JS 开发直接用 class 就行了。
    还有网上经常黑 JS 的那个双等(==)真值表,当段子看看就行了,别理它,正常的 JS 开发都是用三等(===)比较的。
    vopin
        7
    vopin  
       2022-08-07 22:44:42 +08:00
    刚好我也在第无数次入门 JS ,看的教程在讲 prototype 。就是个 class 搞这么绕。
    直觉告诉我应该先跳过
    Vegetable
        8
    Vegetable  
       2022-08-07 22:45:47 +08:00
    先跳过全部 prototype 相关的吧,这样 js 看起来就正常多了。如果真有必要,回头再补那些玩意好了。
    x97bgt
        9
    x97bgt  
    OP
       2022-08-07 22:51:44 +08:00 via iPhone
    @anguiao 我直接想撸一遍 molliza 的文档,没想到看得这么晕
    x97bgt
        10
    x97bgt  
    OP
       2022-08-07 22:54:22 +08:00 via iPhone
    @DOLLOR 感谢老哥,这教程看起来很简洁。
    liuw666
        11
    liuw666  
       2022-08-07 23:14:49 +08:00 via iPhone
    @x97bgt #2 不用去想跳过什么,想想你要用到什么。 打包工具可以用 vite ,配置起来简单。 路由用 react-route-dom ,组件库可以 antd ,样式简单写写就行,我一般全部都是 flex 。 再选个状态管理库 redux recoil jotai 等等,有个能用的就行。 语法的话 就我上面说的 es6 ,不要去想以前的老东西,工程化,现代化,直接写就行了。 写多了,想法就多了,你就知道以前的那些东西要不要学了。 如果有强类型语言的基础,直接写 TS ,不要写 js ,因为 ts 语法提示好,这样你的语法负担就更小了。 而且现在的趋势也是写 ts
    liuw666
        12
    liuw666  
       2022-08-07 23:18:43 +08:00 via iPhone
    可以直接 vite 创建个 react-ts 项目,或者用 vite 官网 awosome-vite 链接的社区模版项目
    liveoppo
        13
    liveoppo  
       2022-08-07 23:35:06 +08:00
    原型继承、原型链 都跳过,未来也尽量避免使用

    也即,任何看不懂的地方都跳过好了,及早看 es6 和 react ,其后你就知道你的真正需要了

    es6 推荐: https://es6.ruanyifeng.com/
    wdhwg001
        14
    wdhwg001  
       2022-08-08 01:13:45 +08:00
    非常不建议跳过 JavaScript 的任何特性。

    非常不建议跳过 JavaScript 的任何特性。

    非常不建议跳过 JavaScript 的任何特性。

    很重要所以说三遍。甚至我觉得如果你有给政企做项目的需求的话,JScript 的特性也是需要学的。

    理由很简单:你初学的时候可以用所有的最佳实践跳过那些坑,但一旦你需要阅读别人的代码,或者调试一些你感觉上正确但实际上却不对的代码的时候,很多时候你必须要了解 JavaScript 中的那些丑陋不堪的部分,并且学会和它们和平相处。

    至于原型相关、this 绑定、==的类型转换,至少我面初级前端的时候,这些基础搞不定直接就算了,前端和切图仔还是有区别的。

    然后我心里的标准的话,初级和中级前端之间的坎是 webpack 等和 ts 类型体操,中级和高级之间的坎是函数式、通读过英文原版 ecma 标准和 v8 的一些底层。
    fyw321451
        15
    fyw321451  
       2022-08-08 05:45:52 +08:00 via iPhone
    @wdhwg001 ?面那些有什么用 卷死所有人从你开始?
    renhou
        16
    renhou  
       2022-08-08 07:53:04 +08:00
    如果你的目的是简单使用 react ,那么建议跳过:
    面向对象( this ,new 等),原型链

    如果你使用 hooks ,那么建议跳过:


    如果你只是调用一些 ui 库没有特别复杂的交互要求,那么建议跳过:
    DOM ,BOM ,事件

    如果你的目的是为了找到一份工作,那么不建议跳过任何东西
    murmur
        17
    murmur  
       2022-08-08 08:15:30 +08:00
    原型链其实不用学的,这东西除了面试基本用不到,造轮子都可以用类了,反正也不考虑 IE 兼容性
    murmur
        18
    murmur  
       2022-08-08 08:16:26 +08:00
    @wdhwg001 this 绑定在政企项目中处理的非常暴利,要么直接 jquery data 方法,让 jquery 帮着你对象数据跟着走,要么起手 var self = this ;然后后面无脑 self

    这俩解决 99.9%的问题
    Bronya
        19
    Bronya  
       2022-08-08 08:35:44 +08:00
    推荐看看胡蝶书,学 js 必看。
    Rocketer
        20
    Rocketer  
       2022-08-08 08:47:27 +08:00 via iPhone   ❤️ 2
    prototype 不难理解,但务必止于了解,千万不要用!千万不要用!!千万不要用!!!

    这东西就是 js 的糟粕,只有老 jser ,受 prototype 折磨很多年的那种,才会让你用这个,不说斯德哥尔摩症候群吧,至少也是在推崇奇技淫巧。在团队开发中全是雷,没有任何一丝一毫的好处。

    this 是个需要注意的问题,很多 bug 都是它导致的,即使经验丰富的老鸟偶尔也会出错。所以能用箭头函数尽量用,没必要花时间跟他较劲。
    johnman
        21
    johnman  
       2022-08-08 09:12:32 +08:00
    nextjs + typescript 开箱即用
    alphardex
        22
    alphardex  
       2022-08-08 09:32:32 +08:00   ❤️ 1
    拒绝 this ,拒绝 prototype ,拒绝拼字符串,拒绝无脑 for
    拥抱箭头,拥抱 class ,拥抱模板字符,拥抱 map
    yaphets666
        23
    yaphets666  
       2022-08-08 09:32:58 +08:00
    js 才多少东西,语法全部都要会,prototype 这也不是语法
    Mutoo
        24
    Mutoo  
       2022-08-08 09:42:15 +08:00
    还真有一个可以跳过,那就是 with 语句。在 MDN 上它甚至被加了垃圾桶图标:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with
    sjhhjx0122
        25
    sjhhjx0122  
       2022-08-08 15:35:25 +08:00
    原型链 学还是要学的,用还是不要用。。即使真的要用 react this 、class 这些东西还是要学,不可能一辈子都是 react hook 吧
    说不准工作需要 angular 呢,说不准以后大家都是直接用 web component 了呢
    autoxbc
        26
    autoxbc  
       2022-08-09 01:25:12 +08:00
    @murmur #17 总有需要手动嫁接原型链的时候,类只能解决典型用法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1241 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:49 · PVG 01:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.