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中的“绑定”一词是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

属性中的“属性:”一词是啥

Android 图标:光学方块一词是啥意思?

在计算机科学环境中,“语义”一词是啥意思?

气象中的QPF是啥意思

这两个词是啥意思

Javascript中的绑定是啥意思?