Dotcpp  >  编程教程  >  JavaScript函数  >  JS函数简单概念

JS函数简单概念

点击打开在线编译器,边学边练

上节学到函数的操作,这节我们将介绍JS简单的概念。

全局变量

在 JavaScript 中,全局变量是在全局作用域中声明的变量,即在任何函数之外声明的变量。全局变量在整个脚本执行期间都存在,可以被任何函数访问和修改。

全局变量的声明有两种方式:

1. 使用 var 关键字声明全局变量:

var globalVar = "全局变量www.dotcpp.com";
function myFunction() {
  console.log(globalVar); // 可以在函数中访问全局变量
}
console.log(globalVar); // 可以在函数外部访问全局变量

2. 直接声明全局变量(不使用关键字):

globalVar = "全局变量www.dotcpp.com";
 
function myFunction() {
  console.log(globalVar); // 可以在函数中访问全局变量
}
console.log(globalVar); // 可以在函数外部访问全局变量

需要注意的是,如果在函数内部没有使用 varletconst 关键字声明一个变量,直接对该变量赋值,那么该变量将成为一个全局变量。但是,为了避免代码中出现意外的全局变量,建议始终使用 var、let 或 const来显式声明变量。

全局变量具有全局范围,所以可以在脚本的任何地方访问它们。但是,滥用全局变量可能导致代码的可维护性和可重用性下降,因此应该谨慎使用全局变量,尽可能将变量的作用域限制在需要使用的范围内。

局部变量

局部变量是在JavaScript函数内部声明的变量,其作用域仅限于函数内部。这意味着局部变量在函数外部是不可访问的。声明局部变量的主要目的是在函数内部存储和处理临时数据,它们在函数执行完毕后会被销毁。

在JavaScript中,可以使用关键字 var、let 或 const 来声明局部变量。这些关键字具有不同的行为和作用范围。

使用 var 关键字声明的变量是函数作用域变量,它们在整个函数内部都是可见的。这意味着无论在函数内的哪个位置声明变量,它们在整个函数内都可以被访问。

例如:

function myFunction() {
  var localVar = "局部变量www.dotcpp.com";
  console.log(localVar);
}
myFunction(); // 输出:局部变量
console.log(localVar); // 报错:localVar is not defined

另外,使用 let 或 const 关键字声明的变量是块级作用域变量,其作用范围仅限于包含它们的代码块(如函数、循环、条件语句等)。这意味着它们在声明的代码块之外是不可见的。

function myFunction() {
  if (true) {
    let localVar = "局部变量www.dotcpp.com";
    console.log(localVar); // 输出:局部变量
  }
  console.log(localVar); // 报错:localVar is not defined
}
myFunction();

总结起来,局部变量是在函数内部声明的变量,其作用范围仅限于函数内部,可以使用 var、let 或 const 关键字来声明。它们在函数执行完毕或代码块结束后会被销毁。

向未声明的 JavaScript 变量分配值

在 JavaScript 中,向未声明的变量分配值会创建一个全局变量。这是因为 JavaScript 具有隐式的全局变量声明机制。

当你给一个变量赋值时,JavaScript 首先会查找当前作用域内是否已经存在该变量的声明。

如果存在,则将新的值赋给该变量;

如果不存在,则 JavaScript 会尝试在作用域链上层查找该变量的声明。

如果在全局作用域中仍然找不到该变量的声明,JavaScript 将会将其视为全局变量,并在全局作用域中创建该变量。

例如:

function myFunction() {
localVar = "全局变量www.dotcpp.com"; // 未声明的变量赋值
console.log(localVar); // 输出:全局变量www.dotcpp.com
}
 
myFunction();
console.log(localVar); // 输出:全局变量www.dotcpp.com

在上面的例子中,变量 localVar 在 myFunction() 函数内部被赋值,由于该变量没有通过 var、let 或 const 声明,JavaScript 将其视为全局变量。因此,在函数外部也可以访问和使用该变量。

非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

为了避免意外创建全局变量和潜在的命名冲突,建议始终使用 var、let 或 const 显式地声明变量,并在合适的作用域内使用它们。这样可以提高代码的可读性、可维护性和健壮性。



本文固定URL:https://www.dotcpp.com/course/1274

上一课:

JS函数操作

下一课:

JS函数的定义

JavaScript教程
第一章 JavaScript入门
第二章 JavaScript基础语法及数据类型
第三章 JavaScript函数
第四章 JavaScript类
第五章 JS高级教程
第六章 JS Window
第七章 JS库
Dotcpp在线编译      (登录可减少运行等待时间)