@
shintendo > 初学 JS 的心智负担在于 JS 作为一个 30 来年的语言,而且为了兼容各种浏览器的,几十年前老的写法用法依旧还保留着,而且很多写法你还不能不学,因为很多写法很多人都在用。然后几十年积累下来各种奇奇怪怪的写法,用法,功能,还有各种奇奇怪怪的符号能让初学的人学到头炸
看仔细了么, 我的观点都写得这么清晰了:“ (初 学 JS 的心智负担不在于语言本身缺陷或像 rust 那样设计到多深奥的知识),而在于源于各种历史包袱下大量的约定俗写法用法功能导致的心智负担”
都写的这么清楚了,我之后列举的所有槽点也都是围绕着我的观点进行的,所以我也就没多提 js 本身的缺陷,我这里说的都是初学 JS 的问题。so ,有问题?
的确像上面有人说的换一种语言相当于换了一种写法,不习惯会有压力这是正常的。但任何事都有个度,什么叫“语言改进了,但是我需要看旧代码”?只在旧代码里看到这些我就无所谓了,可是当年 JS 因为历史原因和缺陷,那些旧的写法、知识、用法随着语言改进,这么写的人越来越少了吗?
像我说的 const foo = () => {}; 还有 (function() {})(); 这种经典的为了规避问题的 JS 写法随着 strict 模式出现不用这么写了而绝迹了吗?并没有。现在不一堆人还在写这样的代码,而且可以预见的未来也不会消失。这不是光去看旧代码的问题,而是已经没有大量使用必要了还必须要了解适应当年为了规避问题养成的习惯写法。新的程序员更喜欢 function 等写法,夹杂着用旧写法的人,堪称美丽
再一个 async/awawit 出现后,喜欢 Promise.then().catch() 以及 Promise 里套 Promise 的人消失或者很少见了吗?虽然有时候的确有必要鼓捣 Promise 但很明显 js 程序员里,对 Promise 和 async/await 的选择并不是源于所谓的各自的使用场景
再一个 class ,ES6 里引入之后鼓捣 prototype 实现继承的人数难道消失了?虽然 class 本质是 prototype 套皮,的很明显后来有其他语言经验的人必定更适应 class 的写法,而另一部分人则更喜欢 prototype 。class 的写法和 prototype 两种截然不同的风格今后也会长期永久并存下去。你必须都会写都要了解
再一个 js 常年累月积累的各种语言特性和功能,上一次初学一门语言让我有种记不过来的情况还是 kotlin 。虽然 kotlin 也算得上是大量语法糖构成的语言,但在语言功能的记忆点上和 js 一比也是小巫见大巫
等等等等
这就是我说的,JS 学习上的心智负担