一次让你了解全部JavaScript的作用域

2023-12-10前端开发
3

一次让你了解全部JavaScript的作用域的攻略包含了以下步骤:

第一步:理解作用域和作用域链

在JavaScript中,作用域是指变量可访问的范围。JavaScript中的作用域是词法作用域,即作用域的范围由代码中变量和函数声明的位置决定。当搜索变量时,会沿着作用域链一级一级地向上查找变量定义。作用域链是指一个指向外部环境的指针列表,它指向所有父级作用域,直到找到目标变量。

第二步:介绍全局作用域

全局作用域是指在全局范围内定义的变量,可以在代码的任何地方被访问。在浏览器中,全局作用域是window对象,也就是说全局变量实际上是window对象的属性之一。

示例1:全局作用域中定义变量

var name = "John";
function sayName() {
  console.log(name);
}
sayName(); // 打印输出 "John"

在示例1中,变量name在全局作用域中声明,函数sayName可以访问该变量并打印输出。函数在查找变量时将一直向上查找到全局作用域。

第三步:介绍局部作用域

在函数内部定义的变量只能在该函数内部访问,这种作用域称为局部作用域。

示例2:局部作用域中定义变量

function greet() {
  var message = "Hello";
  console.log(message);
}
greet(); // 打印输出 "Hello"
console.log(message); // 报错:message未定义

在示例2中,变量message在函数greet的内部作用域中声明,该变量不能在函数外部访问,因此在函数外部访问该变量会导致报错。

第四步:介绍块级作用域

ES6引入了块级作用域,用于限制变量的可访问范围。块级作用域可以由花括号{}定义,如if语句或for循环语句。

示例3:块级作用域中定义变量

if (true) {
  let message = "Hello";
  console.log(message);
}
console.log(message); // 报错:message未定义

在示例3中,变量message在if语句的块级作用域中定义,该变量只能在该块级作用域内访问,因此在块级作用域外访问该变量会导致报错。

通过理解作用域和作用域链、全局作用域、局部作用域和块级作用域,可以全面理解JavaScript的作用域概念,进而编写出更加健壮的代码。

The End

相关推荐

layui实现图片上传成功后回显点击放大图片功能
layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-...
2025-09-06 前端开发
202

Layui实现数据表格中鼠标悬停图片放大离开时恢复原图
Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150...
2025-09-04 前端开发
112

layui点击文本输入框调起弹出选择框并选择内容的两种方法参考
我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen...
2025-09-02 前端开发
167

网站部署https后百度地图不显示问题
https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1...
2025-07-28 前端开发
139

微信小程序实现点击复制功能和手机拨打电话功能
做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"...
2025-07-02 前端开发
78

js拖拽排序插件Sortable.js如何使用
由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持...
2025-06-12 前端开发
161