JavaScript的作用域和块级作用域概念理解

JavaScript作用域

在JavaScript中,作用域控制着变量和函数的可见性和生命周期。作用域是定义变量、函数以及访问它们的地方的一套规则。

作用域分为全局作用域和局部作用域。在函数中定义的变量、函数参数以及函数内部声明的函数都属于该函数的局部作用域。全局作用域包含了浏览器环境下的所有对象和方法,函数内部可以访问全局变量。

JavaScript作用域规则:
1.全局变量可以在整个程序范围内访问,函数内部可以访问全局变量
2.函数内部声明的变量只能在函数内部访问
3.函数内部可以访问全局变量
4.变量在出现在赋值表达式左侧时进行声明和初始化,赋值表达式右侧可以是任何类型

示例1:

var globalVar = 1; // 全局变量

function myFunc() {
  var localVar = 2; // 局部变量
  console.log(globalVar); // 可以访问全局变量
  console.log(localVar); // 可以访问局部变量
}

myFunc(); // 函数运行
console.log(globalVar); // 可以访问全局变量
console.log(localVar); // 局部变量无法在函数外部访问

示例2:嵌套函数

function outer() {
  var a = 1;

  function inner() {
    var b = 2;
    console.log(a); // 可以访问外部函数的变量
  }

  inner(); // 调用内部函数
}

outer(); // 调用外部函数

块级作用域

JavaScript是ES6之前没有块级作用域的,只有全局作用域和函数作用域。而块级作用域类似于函数作用域,但是只存在于if语句、循环语句、try/catch语句以及ES6新增的let和const关键词中。

块级作用域规则:
1.变量和函数在块级作用域中声明时只存在于该块级作用域中,不会污染全局变量
2.块级作用域中存在变量提升,但需要注意使用let和const关键词
3.块级作用域在外部无法访问其中的变量

示例3:if语句块级作用域

var a = 1;
if (true) {
  var a = 2;
}
console.log(a); // 2

使用var声明变量时,if语句中的a变量会覆盖全局变量a,导致输出结果为2。

示例4:let语句块级作用域

let b = 1;
if (true) {
  let b = 2;
  console.log(b); // 2
}
console.log(b); // 1

使用let声明变量时,if语句中的变量b只存在于该块级作用域中,不会影响全局变量b,输出结果为2和1。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript的作用域和块级作用域概念理解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript中Iterator迭代器接口和循环

    JavaScript中的Iterator迭代器接口是用于实现遍历数据集合的一个标准接口,它可以遍历各种数据结构(包括数组、集合、字典等),并且提供了一种通用的方法来访问和操作这些数据结构中的个体元素。在JavaScript语言中,Iterator迭代器接口是一个非常重要的编程工具,它可以方便地实现循环遍历数据结构的过程。 Iterator迭代器接口的实现 I…

    JavaScript 2023年5月27日
    00
  • JavaScript的学习入门整理篇

    让我来详细讲解一下 JavaScript 的学习入门整理篇。 前言 JavaScript 可以说是前端开发的必备技能,不仅可以用于 DOM 操作,还可以实现复杂的交互效果、表单验证和数据存储等。对于初学者来说,学习 JavaScript 需要掌握一定的基础知识,包括语法、数据类型、函数、对象等,才能更好地理解和运用它。 基础语法 变量和数据类型 JavaSc…

    JavaScript 2023年5月18日
    00
  • 理解Javascript_13_执行模型详解

    下面是关于“理解Javascript_13_执行模型详解”的完整攻略。 1. 理解Javascript执行模型 1.1 什么是执行模型 JavaScript 执行模型是指描述 JavaScript 引擎如何解析和执行 JavaScript 代码的一种方式。简单来说,就是 JavaScript 程序在浏览器中如何被“翻译”成机器能够理解的指令,然后顺序地被执行…

    JavaScript 2023年5月18日
    00
  • Vue.js每天必学之数据双向绑定

    Vue.js每天必学之数据双向绑定攻略 什么是数据双向绑定 数据双向绑定是指当数据发生变化时,页面元素会自动更新来保持一致,同时当用户操作页面元素发生变化时,与之绑定的数据也会自动更新。 为什么需要数据双向绑定 数据双向绑定可以帮助我们更加方便地处理页面元素和数据之间的关系,简化了开发过程并提高了开发效率。 如何实现数据双向绑定 Vue.js提供了v-mod…

    JavaScript 2023年6月11日
    00
  • vue3动态添加路由

    Vue3是一款流行的JavaScript框架,用于构建可复用的Web组件和复杂的单页应用程序。Vue3允许在运行时动态添加路由,从而增强了Web应用程序的可扩展性和灵活性。 以下是Vue3动态添加路由的完整攻略: 1. 安装Vue Router 在开始使用Vue3动态添加路由之前,需要安装Vue Router。可以使用npm或yarn进行安装。例如,在使用n…

    JavaScript 2023年6月11日
    00
  • JavaScript 数组详解

    JavaScript 数组详解 简介 JavaScript 中的数组是一种用于存储和操作一组或多组数据的有序集合。数组可以存储任何类型的数据、可以根据需要进行扩展或缩小。JavaScript 数组有许多强大的方法和属性,可以对数组进行各种处理,例如查找、添加、删除和排序等操作。 数组的基本操作 声明数组 在 JavaScript 中,可以使用以下方式声明一个…

    JavaScript 2023年5月17日
    00
  • JavaScript实现返回顶部按钮案例

    下面详细讲解一下“JavaScript实现返回顶部按钮案例”的完整攻略。 1. 添加HTML代码和CSS样式 首先在HTML文件中添加返回顶部按钮的HTML代码,例如: <a href="#" id="back-to-top" title="返回顶部"> <i class=&quo…

    JavaScript 2023年6月11日
    00
  • JS实现日期时间动态显示的方法

    实现日期时间动态显示的方法可以使用JavaScript代码来实现,JavaScript 提供了一些可以使用的函数和对象,我们可以通过这些函数和对象来完成这一过程。 步骤一:获取日期时间对象 在JavaScript中获取日期时间对象可以使用内置对象 Date 。Date 对象同时包含了日期和时间,可以通过这个对象获取当前的日期时间。 var now = new…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部