gpt4 book ai didi

javascript - javascript中作用域和命名空间有什么区别

转载 作者:行者123 更新时间:2023-12-04 16:52:50 24 4
gpt4 key购买 nike

大家好 。实际上,我正在学习 Javascript 。我阅读了 javascript 中的范围。然后我在 Js 中阅读了有关 namespace 的某处,我想知道 namespace 是否与 scope 完全相同,所以我进行了搜索,但结果只是针对 python 进行了解释,我不知道它们在 js 中是否相同。

would someone explain the difference between scope and namespace in js ?


我对范围的定义 :作用域是编程语言中的一个概念,可以帮助我们防止变量污染。这意味着我们控制了代码中变量和函数的可访问性。 Node.js 是一种函数作用域语言,这意味着如果我们创建新函数,就会创建新的作用域。我们可以在新关键字 的帮助下声明块作用域而不是函数作用域变量和函数让 , const

最佳答案

“命名空间”仅在与 module namespace exotic object 相关的 JavaScript 规范中使用,这是在您执行 import * 时创建(或重用)的对象从一个模块。它包含所有模块命名导出的属性(如果有默认导出,还有一个名为 default 的属性)。
在 JavaScript 有官方模块之前,JavaScript 的定义中根本没有使用“命名空间”。它被非正式地用于指代由具有该模块“导出”属性的代码单元(松散地,“模块”)创建的对象,如下所示:

// ES5 code - one style of the "revealing module pattern"
var MyLib = (function() {
function internalFunction() {
// ...
}

return {
exportedFunction: function() {
// ...
}
};
})();
那里, MyLib有时被称为“命名空间”,但这纯粹是非正式的。它只是一个对象。
“范围”是一个程序源代码区域,它定义了变量和相关事物的容器。 (有时它用于指代规范定义的结果“对象”,但更恰本地称为词法 environment records 。)例如,此源代码有两个显式作用域:
function example(someParam) {
if (someParam === "some value") {
console.log("something");
}
}
范围是:
  • {}内的函数作用域定义函数体。
  • {} 内的块范围在 if 上定义块.

  • (还有函数周围的隐式作用域,这取决于此源代码出现的位置——有时称为“环境作用域”。)
    在运行时,当 example被调用,规范描述了为函数作用域创建环境记录,然后为块作用域创建环境记录。 (这只是规范语言;JavaScript 引擎不必按字面意思去做。)有时,一个范围可以有两个为其定义的环境记录(全局范围就是这样),但通常是一对一的。

    关于javascript - javascript中作用域和命名空间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68902324/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com