- JavaScript编程精解(原书第3版)
- (美)马尔奇·哈弗贝克
- 734字
- 2023-06-21 17:54:30
2.2 绑定
程序如何保持内部状态?它如何记住事情呢?我们已经看到了如何从旧值生成新值,但这不会改变旧值,并且必须立即使用新值,否则它将再次消失。为了捕获和保留值,JavaScript提供了一个称为绑定(binding)或变量(variable)的东西:
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0032_0001.jpg?sign=1739420094-yObqRzYudIFwvQsSQbRyPLshLjuVmkQ4-0-3d2507c903d507e9e437629e84b25b1f)
这是第二种语句。特殊单词(关键字)let表示此语句将定义一个绑定。它后面是绑定的名称,如果我们想要立即给它一个值,则由=运算符和表达式来完成。
前面的语句创建了一个名为caught的绑定,并用它来获取5乘以5生成的数字。
定义绑定后,其名称可用作表达式。此类表达式的值是绑定当前持有的值。下面是一个示例:
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0032_0002.jpg?sign=1739420094-Y8MjdGd7DBDQrqQGWvlDFwHUFy9ElMkS-0-2e1cedc6ea9862064472d5f00b3568a5)
当绑定指向一个值时,这并不意味着它永远与此值相关联。=运算符可随时用于现有绑定,以断开它们与当前值的连接,并让它们指向一个新的值。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0032_0003.jpg?sign=1739420094-K5gX9GQNSAEloeKH8TXJXpmXGjiWNfhQ-0-87d01a8d27f3c22df7b463a7ec7af817)
你应该将绑定想象成触手,而不是盒子。它们不包含值,只抓住值,两个绑定可以引用相同的值。程序只能访问它仍然引用的值。当你需要记住某样东西时,你长出一个触手来抓住它,或者你重新连接你现有的某个触手。
让我们来看另一个例子。为了记住Luigi还欠你多少美元,你创建了一个绑定。然后,当他偿还35美元后,你给这个绑定一个新的值。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0032_0004.jpg?sign=1739420094-8nOZyVvyD2QZpucqlUdcZkVeZZFBgbAR-0-6c1421a4c1edd4f9fcb3d3da6d51d34b)
当你定义绑定而不赋予它值时,触手就没有什么可抓住的,所以它在稀薄的空气中结束。如果索求空绑定的值,你将获得undefined值。
单个let语句可以定义多个绑定。多个绑定的定义必须用逗号分隔。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0033_0002.jpg?sign=1739420094-YbQ8ZJxoPwjlF2k3mSHG6YPa45aLmMnc-0-71cdbcd7a058d538bcf7dd85fa12fd1c)
var和const等单词也可用于创建绑定,其方式类似于let。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0033_0003.jpg?sign=1739420094-tPuwsMOJlifgtK6nTkaa9QYsFzTzQkIT-0-2b7e29fd54ff50324b93bf4c01e61598)
第一个var(variable的缩写)是在2015年以前的JavaScript中声明绑定的方式。我将在下一章回过头来精确解释它与let的区别。现在,请记住,它大多时候与let做同样的事情,但我们在这本书很少使用它,因为它有一些令人困惑的属性。
const一词代表常量(constant)。它定义了一个常量绑定,只要它存在,它就一直指向相同的值。这对于为值指定名称的绑定很有用,在以后可以轻松地引用它。