左手似乎还挽着初春,右手的太阳就这样升了又沉,日子就这样过的快了又慢。时间总在回忆处流连忘返,冬天一结束就是夏天,羽绒服还没收起就变得烈日炎炎。不知不觉间,就已经在 OneKey 呆到了第三个年头。
不知道为什么,最近的这段时间,每天晚上只要一闭眼,总是会回忆起以前学习和工作上的事情。我不是一个喜欢过去的人。有人说喜欢怀旧是因为现在过的不好,我对这句话倒不是很认可,一叶可以知秋,一叶可以障目,如鱼饮水,冷暖自知,很多事情还是得亲自问自己找到答案。
左手似乎还挽着初春,右手的太阳就这样升了又沉,日子就这样过的快了又慢。时间总在回忆处流连忘返,冬天一结束就是夏天,羽绒服还没收起就变得烈日炎炎。不知不觉间,就已经在 OneKey 呆到了第三个年头。
不知道为什么,最近的这段时间,每天晚上只要一闭眼,总是会回忆起以前学习和工作上的事情。我不是一个喜欢过去的人。有人说喜欢怀旧是因为现在过的不好,我对这句话倒不是很认可,一叶可以知秋,一叶可以障目,如鱼饮水,冷暖自知,很多事情还是得亲自问自己找到答案。
在 WEB 开发的早期,为了团队协作和代码维护的方便,许多开发者会选择将 JavaScript 代码分开写在不同的文件里面,然后通过多个 script 标签来加载它们。
1 | <script src="./a.js"></script> |
虽然每个代码块处在不同的文件中,但最终所有 JS 变量还是会处在同一个 全局作用域 下,这时候就需要额外注意由于作用域变量提升
所带来的问题。
最近两天 ry 的新项目 deno 火了一把。作为 node 项目的发起人,如今基于 go 重新写了一个服务端 JS 上下文(后来又改成了 rust = =),同时项目名 deno 也是 “n”, “o”, “d”, “e” 四个字母更换了一下顺序,引发了大家的强烈关注以及联想。
与 node 相比,deno 项目在 readme 的一开始就列举出了这个项目的优势和需要解决的问题。里面最让人瞩目的就是所有模块原生支持 ts ,同时也必须从 url 来加载一个模块,这也是与现有的 node.js 里的 CommonJS 模块化最大的不同。
JS 里面的变量类型可以大致分为基本类型和引用类型。在使用过程中,引用类型经常会产生一些无法意识到的副作用,所以在现代 JS 开发过程中,有经验的开发者都会在特定位置有意识的写下断开引用的不可变数据类型。
1 | // 引用带来的副作用 |
前两天在网上看到了一道很有趣的题目,题目大意为:JS 环境下,如何让 a == 1 && a == 2 && a == 3
这个表达式返回 true
?。
这道题目乍看之下似乎不太可能,因为在正常情况下,一个变量的值如果没有手动修改,在一个表达式中是不会变化的。当时我也冥思苦想很久,甚至一度怀疑这道题目的答案就是 不能。直到在 stackoverflow 上面竟然真的发现了解法 can-a-1-a-2-a-3-ever-evaluate-to-true。
让这个表达式成为 true
的关键就在于这里的宽松相等,JS 在处理宽松相等时会对一些变量进行隐式转换。在这种隐式转换的作用下,真的可以让一个变量在一个表达式中变成不同的值。