ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript let

2022-09-03 00:34:06  阅读:332  来源: 互联网

标签:10 变量 作用域 JavaScript let var 声明


JavaScript let

1. 全局作用域

全局(在函数之外)声明的变量拥有全局作用域

var name1 = "yao";//全局作用域
//此处可以使用name1
function myFunction(){
    //此处也可以使用name1
}

全局变量可以在JavaScript程序中的任何位置访问。

2. 函数作用域

局部(函数内)声明的变量拥有函数作用域

//这里不可以使用carName
function myFunction(){
        var carName = 'porsche';//函数作用域
    //这里可以使用carName
    }
//这里不可以使用carName

局部变量只能在它们被声明的函数内访问。

3. JavaScript 块作用域

通过var关键词声明的变量没有作用域

在块{ }内声明的变量可以从块之外进行访问。

{
    var x = 10;
}
//此处可以使用 x

可以通过let关键词声明拥有块作用域的变量。

在块{ }内声明的变量无法从块外访问。

{
    let x = 10;
}
//此处不可以使用 x

4. 重新声明变量

使用var关键字重新声明变量会带来问题。

在块中重新声明变量也将重新声明块外的变量:

var name = 'yao';
{
    var name = 'li';
}
//此处 name 为 li

使用let关键字重新声明变量

在块中重新声明变量不会重新声明块外的变量:

var name = 'yao';
{
    let name = 'li';
}
//此处 name 为 yao

5. 循环作用域

在循环中使用var

var i = 7;
for (var i = 0; i < 10; i++){
    //一些代码
}
//此处 i 为 7

在循环中使用let

let i = 7;
for (let i = 0; i < 10; i++){
    //一些代码
}
//此处 i 为 10

在例子中,在循环中使用的变量使用var重新声明了循环之外的变量。

在循环中使用的变量使用let并没有重新声明循环外的变量。

如果在循环中用let声明了变量 i ,那么只有在循环内,变量 i 才是可见的

6. HTML 中的全局变量

在 HTML 中,全局作用域是 window 对象

通过var关键词定义的全局变量属于 window 对象:

var carName = 'poesche';
//此处的代码可使用 window.carName

通过let关键词定义的全局变量不属于 window 对象:

let carName = 'Audi';
//此处的代码不可使用 window.carName

7. 重新声明

允许在程序的任何位置使用var重新声明 JavaScript 变量:

var x = 10;
//现在 x 为 10
var x = 20;
//现在 x 为 20

在相同的作用域,或在相同的块中,不允许通过let重新声明一个var变量

var x = 10;//允许
let x = 20;//不允许
{
    var x = 10;//允许
    let y = 20;//不允许
}

在相同的作用域,或在相同的块中,不允许通过let重新声明一个let变量

let x = 10;//允许
let x = 20;//不允许
{
    let x = 10;//允许
    let x = 20;//不允许
}

在相同的作用域,或在相同的块中,不允许通过var重新声明一个let变量

let x = 10;//允许
var x = 20;//不允许
{
    let x = 10;//允许
    var x = 20;//不允许
}

不同的作用域或块中,允许通过let重新声明变量、

let x = 20;//允许
{
    let x = 7;//允许
}
{
    let x = 80;//允许
}

8. 提升

通过var声明的变量会提升(Hoisting)到顶端,可以在声明变量之前就使用它

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript 提升</title>
</head>
<body>
    <h1>JavaScript 提升</h1>
    <p>使用<b>var</b>,可以在声明之前使用变量:</p>
    <p id="demo"></p>//Audi
    <script>
        carName = 'Audi';
        document.getElementById('demo').innerHTML = carName;
        var carName;
    </script>
</body>
</html>

通过let定义的变量不会被提升到顶端

在声明let变量之前就使用它会导致ReferenceError

变量从块的开头一直处于"暂时死区",直到声明为止

标签:10,变量,作用域,JavaScript,let,var,声明
来源: https://www.cnblogs.com/YlMXY/p/16651758.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有