JS中的“绑定”一词是啥意思?
Posted
技术标签:
【中文标题】JS中的“绑定”一词是啥意思?【英文标题】:What does the term 'binding' mean in JS?JS中的“绑定”一词是什么意思? 【发布时间】:2020-09-17 11:15:50 【问题描述】:请为我解释一下 binding 一词在 javascript 中的含义。我已经开始阅读“Eloquent JS”这本书,并且这个词出现了很多次。它只是意味着变量吗?以下是书中的几个例子:
-
所以如果你知道你感兴趣的属性叫做颜色,你说value.color。如果要提取由 binding i 中保存的值命名的属性,可以说 value[i].Property 名称是字符串。它们可以是任何字符串,但点符号仅适用于看起来像有效 binding 名称的名称。
绑定 也可以是可变的或恒定的,但这与它们的值的行为方式是分开的。即使数字值不变,您也可以使用 let 绑定通过更改 binding 指向的值来跟踪不断变化的数字。同样,虽然 const binding 到一个对象本身不能改变,并且会继续指向同一个对象,但该对象的内容可能会改变。
【问题讨论】:
这听起来像“键值对”——就像键和值之间发生的“绑定”一样。我不确定在 javascript 的上下文中是否有术语“绑定”的官方定义。 en.wikipedia.org/wiki/Name_binding 这些可能会有所帮助 webster-dictionary.net/definition/binds , webster-dictionary.net/definition/bond 【参考方案1】:我已经发现了它是什么(在本书的前一章中)。这是sn-p:
程序如何保持内部状态?它是如何记住事物的?我们已经看到了如何从旧值产生新值,但这不会改变旧值,并且必须立即使用新值,否则它将再次消散。为了捕获和保存值,JavaScript 提供了一种称为绑定或变量的东西:
let caught = 5 * 5;
这是第二种说法。特殊词(关键字)
let
表示这句话要定义一个绑定。它后面是绑定的名称,如果我们想立即给它一个值,可以使用=
运算符和一个表达式。前面的语句创建了一个名为
caught
的绑定,并使用它来获取由 5 乘以 5 产生的数字。
【讨论】:
【参考方案2】:绑定是一个通用术语,表示您的符号或变量指向内存中的某个位置。这也说明了 JavaScript 中的原理,即即使您使用 const 声明对象,您仍然可以操作该对象的属性。只有对对象本身的引用不能被重新定义。
所以你不能说 myObj = greeting: "Hello Stack Overflow" 然后 myObj = someOtherObj。但你可以说 myObj.greeting = "Beep Boop"
【讨论】:
这是不同切线相关概念的大杂烩,但实际上并没有回答问题。 大杂烩是什么意思,我直接回答了这个问题。 “请为我澄清一下 JavaScript 中的术语绑定是什么意思?”,他链接的 sn-p 还提到了这样一个事实,即可以使用 const 声明进行此绑定并且仍然可以操作属性。【参考方案3】:好的,让我澄清一下。第一个问题什么是绑定:
绑定是指向某个字面值或内存中的对象的符号、变量、常量等。
关于你的书,它说:
const myObj = color: blue ; // the property color is defined on this object
myObj["color"]; // => "blue" The color property can be accessed by passing in a string
myObj = anotherObj; // not allowed, you declared it with const
引用或绑定指向内存中的对象,并且不能更改,因为您使用 const 声明了此引用。但是您可以修改内存中对象的属性。对象本身是可变的。
任何关于绑定的进一步讨论都是关于词法作用域的讨论。
【讨论】:
以上是关于JS中的“绑定”一词是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章