Node.js 本地域,脚本域和全局域是什么
Node.js 是一个开源且跨平台的运行时环境,用于在浏览器之外执行JavaScript代码。您需要记住Node.js不是一个框架,也不是一个编程语言。大多数人都会对此感到困惑,认为它是一个框架或编程语言。我们通常使用Node.js构建后端服务,如Web应用程序或移动应用程序的API。它被像Paypal、Uber、Netflix、Walmart等大公司用于生产。
变量的作用域: 作用域一词指的是我们可以使用某个东西的范围。在编程中,变量的作用域指的是我们在程序中可以使用变量的范围。
在JavaScript中,主要有三种类型的作用域:
- 本地作用域
- 全局作用域
- 脚本作用域
本地作用域:
- Node.js应用程序以本地作用域启动。本地变量由函数定义。具有本地作用域的变量限制了它们在定义它们的函数中的使用。
- 它也被称为 默认作用域 。
示例1: 在本地作用域下定义变量的示例-
var d = 'Tom';
function zeta() {
var d;
if (d === undefined) {
d = 'Jerry';
}
console.log(d);
}
zeta();
输出:
Jerry
解释: Zeta函数用于声明一个新的变量d,该变量具有局部作用域。在JavaScript中,变量在代码的任何位置包括时,都会在当前作用域的顶部初始化,而使用var来声明变量。
示例2: 这是另一个在局部作用域下声明变量的示例 –
var locales = {
europe: function () {
// The Europe continent's local scope
var myFriend = "Monique";
// France country's local scope
var france = function () {
// The Paris city's local scope
var paris = function () {
// output: Monique
console.log(myFriend);
};
paris();
};
france();
}
};
locales.europe();
输出:
Monique
解释: myFriend变量在France函数的外部作用域中声明,因此在此情况下可以从Paris函数中访问。如果将myFriend变量和console语句交换位置,则不会声明MyFriend。
全局作用域:
- 当您位于全局作用域中时, var something 会定义一个全局变量,因为全局作用域是浏览器中的最高作用域,在Node中并非如此。在Node模块内部,变量将仅限于该模块;全局作用域将不再是顶层作用域。
示例1: 声明全局作用域下的变量的示例-
// Global Scope
const name = "Monique";
function sayHi() {
console.log(`Hi ${name}`);
}
sayHi();
// Hi Monique
输出:
Hi Monique
解释: 从以上给出的简单示例中,我们可以看到变量名是全局的。它可以在整个应用程序中使用,并在全局范围内定义。
示例2: 这是另一个示例,说明了全局作用域 –
//Global Variable in JavaScript
var scope = "Global"; //Global Variable
console.log(scope); //Global
function access() {
console.log(scope); // Accessing a global variable
}
access(); //Global
输出:
Global
Global
解释: 上面给出的是一个简单的JavaScript程序,我们使用关键字var在全局作用域下声明了变量Global。在全局作用域的变量中,我们可以使用三个关键字:let、const和var。
脚本:
- 脚本作用域实际上是一个保存变量的地方,这些变量是共享的,严格不暴露给全局作用域的。
- 每个脚本或脚本模块的子级共享脚本作用域。
- 实质上,它们是一系列终端命令或者终端命令本身,用于自动化重复的家务。可以把NPM脚本当作一系列终端命令来概括。项目的脚本保存在包的部分中。
let GLOBAL_DATA = { value: 1 };
console.log(GLOBAL_DATA);
输出:
{ value: 1 }