JavaScript let 关键字

JavaScript let 关键字

在JavaScript中, let是一个关键字 ,用于声明一个块级作用域变量。通常使用 var关键字 来声明一个在JavaScript中视为普通变量的变量,但使用let关键字声明的变量是块级作用域的。

JavaScript提供了三种声明变量的方式: var,const,let 。 这些关键字提供了不同的功能。var是一种传统的声明变量的方法,而 constlet关键字 是ES2015/ES6之后引入的,用于创建 块级作用域变量

在JavaScript中,以前只有两种变量作用域: 全局作用域函数作用域

let的语法

以下是使用 let关键字 声明一个变量的语法:

let variable_name;

示例

以下是各种示例,用于帮助您了解let变量在块或函数内外的工作原理。这些是使用let在不同作用域中声明变量的简单示例。

示例1:全局作用域

在这里,您可以看到在主体或函数外部声明的变量具有全局作用域。因此,它可以从函数内外的任何地方访问。

<script>
let x =20; 
document.write("Outside the function x = " + x); 

function show(){ 
    document.write("<br> Inside the function x = " + x); 
} 
show(); 
</script>

输出

Outside the function x = 20
Inside the function x = 20 

截图

这是上述程序的网页输出:

JavaScript let 关键字

示例2:函数作用域

在这个示例中,你将看到一个在函数内部声明的变量只有函数作用域。因此,它不允许在函数外部访问。

<script>
function show(){ 
    let num = 15; 
    document.write("Inside the function num = " + num); 
} 
show(); 
document.write("<br> Outside the function num = " + num); 
</script>

输出

在这里,您会看到只有函数内的第一个语句被打印出来,第二个语句没有显示出来。它将 num is undefined 视为函数作用域之外的内容。

Inside the function num = 15

截图

这是上述程序的网页输出:

JavaScript let 关键字

查看上述程序的控制台输出,以了解为什么第二个语句没有打印。在您的浏览器中,点击三个点并转到 **更多工具 – > 开发者工具 -> 控制台 ** ,并在控制台中查看以下错误:

UncaughtReferenceError: num is not defined

示例3:块级作用域

在这个示例中,你会发现在块内声明的变量不能在块外使用,因为它具有块级作用域。

<script>
  { 
    let num = 30; 
    document.write("Inside the function num = " + num); 
  } 
  document.write("<br> Outside the function num = " + num); 
</script>

输出

在这里,只有块语句会显示使用 let 关键字声明的 num 变量的值。第二个语句不会显示 num 变量的值。

Inside the function num = 30

屏幕截图

这是上述程序的网页输出:

JavaScript let 关键字

查看上述程序的控制台输出,以了解为什么第二个语句没有打印出来。在您的浏览器中,点击三个点,进入 更多工具 – > 开发者工具 -> 控制台,然后在控制台中查看下面所示的错误:

UncaughtReferenceError: num is not defined

示例4:在不同的代码块中重新声明变量

在这个示例中,我们会在不同的代码块中声明一个具有相同名称的变量,并显示其值。

<script>
  let num = 23;
  { 
    let num = 15; 
    document.write("num inside the function = " + num); 
  } 
  let num = 89;
  document.write("<br> num outside the function = " + num); 
</script>

输出

在执行上述代码时,由于不允许使用let变量重新声明,因此会生成一个错误。因此,在浏览器上不会显示任何输出。

截图

这是上述程序的空白Web输出:

JavaScript let 关键字

如果您看到控制台输出,这将显示执行此程序时生成的错误。

SyntaxError: redeclaration of let x
note: Previously declared at line 2, column 5  

let和var关键字有什么不同

在下面的示例中,你可以看到使用let关键字和var关键字声明的变量具有不同的变量作用域和能力。

let和var的主要区别在于它们的作用域。var具有全局作用域,而let具有块级作用域。请看以下示例来了解这个区别:

变量作用域

在这些示例中,我们将展示使用var和let声明的变量的作用域。

Var:全局作用域示例

<script>
function checkGlobalScope() {

  // x is declared yet so not available here
  document.write('Value of x before the block: ' + x);
  {
      var x = 20;
      x = x + 8;
  }
  // x is still known here and has a value.
  document.write('<br> Value of x after the block: ' + x);
}

//x is declared inside the function, so not available here 
checkGlobalScope()
</script>

输出

Value of x before the block: undefined
Value of x after the block: 28

截图

查看上面程序的Web截图:

JavaScript let 关键字

let:块级作用域示例

<script>
function checkBlockScope() {
  {
    let x = 30;
    // initial value of x will print here
    document.write('Initial value of x: ' + x);

    x = x + 7;  
    // updated value of x will print
    document.write('<br> Value of x inside the block: ' + x);
  }
  // the value of x will not print here
  document.write('<br> Value of x outside the block: ' + x);
}

checkBlockScope()
</script>

输出

Initial value of x: 30
Value of x inside the block: 37

截屏

查看上述程序的网页截图:

JavaScript let 关键字

这些示例将向您展示在使用var和let关键字声明变量时,变量在块内外部具有不同的作用域。

循环作用域

在这些示例中,我们将向您展示使用var和let声明的变量的作用域。

let:循环作用域示例

<script>
function checkLoopScope() {
 let i = 4;
 for (let i = 0; i < 10; i++) {
  // some statements
 }
  // x is still known here and has a value.
  document.write('Final value of x outside of the loop: ' + i);
}

checkLoopScope()
</script>

输出

在这里,您会看到i的初始值将显示,因为使用let关键字不允许重新声明。

Final value of x outside of the loop: 4

截图

查看上面程序的网页截图:

JavaScript let 关键字

var:循环范围示例

<script>
function checkLoopScope() {
 var i = 4;
 for (var i = 0; i < 10; i++) {
  // some statements
 }
  // updated value of i will display
  document.write('Final value of x outside of the loop: ' + i);
}

checkLoopScope()
</script>

输出

这里,你会看到因为使用var关键字允许重新声明,所以会显示i的更新值。

Final value of x outside of the loop: 10

Screenshot

查看上述程序的网页截图:

JavaScript let 关键字

重新声明

查看下面的示例以理解哪个变量声明是允许的,哪个是不允许的。使用var关键字可以在程序的任何位置进行变量声明。

示例1

var num = 6;
//num is 6 here

var num = 3;
//num is 3 here

示例2

var num = 6;
let num = 2;            //redeclaration is not allowed using let

示例3

let num = 6;             // allowed

let num = 2;            // not allowed

示例4

let num = 61;             // allowed
{
       let num = 29;            // allowed
}
{
       let num = 37;            // allowed
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程