144 - 《Just JavaScript 笔记和翻译包》

发布于 2022年6月30日

Just JavaScript 是 Dan 出品的 JavaScript 入门课程,刚出时就买了。今天翻「Might DO」清单捞回来的,看了好久,总算是看完了。作为 10 年+ JavaScript 经验的前端,也学到了不少,上午在群里提的问题,都是出自本书。同时,看的时候顺手翻译了下,中英文版见附件。

Just JavaScript 会帮你打造正确的心智模型。心智模型之所以重要,是因为他能确保你对代码的估算是正确的。在头脑中模拟一台计算机很难,心智模型是你唯一能依赖的。

比如:

function duplicateSpreadsheet(original) {  
 if (original.hasPendingChanges) {  
  throw new Error('You need to save the file before you can duplicate it.');  
 }  
 let copy = {  
  created: Date.now(),  
  author: original.author,  
  cells: original.cells,  
  metadata: original.metadata,  
 };  
 copy.metadata.title = 'Copy of ' + original.metadata.title;  
 return copy;  
}

比如:

if (typeof(value) === 'date') {  
 console.log('This is a date, indeed!');  
}

这些都是有点问题的代码,你能一眼看出吗?

Just JavaScript 讲解的内容不多,只有值、变量、equality 运算、属性、突变和原型。但却是我见过讲 JavaScript 讲地最有趣的一本书,比如 JavaScript 宇宙的设定、变量是线的比喻、表达式即提问的比喻、undefined 黑洞的比喻、福尔摩斯和约翰的故事、值的假面舞会、值的召唤和创建等,都令人印象深刻。趁我还没忘光,赶紧做些笔记。

1、值。共 9 种值,无意缺失的 Undefined、有意缺失的 Null、Booleans、Numbers、大数运算的 BigInts、Strings、Symbols、对象和函数;这些值又可分为两类,前 7 种是原始值,后 2 种是引用值;通过 typeof 可窥探值类型,但要注意有一个会说谎;Null 和 Undefined 是孤独的值,他们只有一个唯一值。

2、表达式。比如 1+2,比如 typeof X,比如 a.b 等都是表达式。这里有个很好的比喻,表达式是你向 JavaScript 提的问题,然后他会告诉你一个「值」。比如你问 1+2 是什么,他会回复你 3。

3、原始值和引用值。原始值不可变,比如 let foo = 'bar'; foo[0]='h'; console.log(foo); 得到的还是 'bar',如果你开启了严格模式,还会直接报错;引用值是可变的,比如 let foo = ['b']; foo[0] = 'c'; console.log(foo) 会得到 ['c']。作者把原始值比喻成遥远的星星;把引用值比喻成围绕在周围可操控的小行星。

4、变量。变量不是值,变量指向值。变量是线。比如 let pet = "dog",等号的左边是变量,等号的右边是值或表达式,如果是表达式,会求值;变量赋值就是把变量和值通过线连起来;文章里用动图很形象地表示了线连的过程,推荐自己翻看。

5、Undefined。别被名字骗了,以为他是「未定义」,然后写 console.log(foo); let foo 这种代码;Undefined 就是普通的原

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。