JavaScript作用域和变量的使用规则简述

简介: JavaScript作用域和变量的使用规则简述

一、JavaScript中 作用域


在JavaScript中 作用域分为两种: 一种是全局作用域, 一种是局部作用域。


1、全局作用域:

全局作用域是最大的作用域,在全局作用域中定义的变量可以在任何地方去使用。浏览器页面打开的时候,会自动给我们生成一个全局作用域window。作用域一直会存在,直到页面关闭的时候会销毁,我们在浏览器控制台能够访问的变量都是全局作用域。


2、局部作用域:


局部作用域就是在全局作用域底下开辟出来的一个小作用域,在局部作用域中定义的变量只能在这个局部地区可以使用,不能越界,在JavaScript中只有函数能够生成一个局部作用域,别的都不行。每一个函数,都是一个局部作用域。


二、变量的使用规则


变量的使用规则也分为两种:访问规则赋值规则


1、变量访问规则


变量的访问规则,只能向上找,不能向下找;

先在自己的作用域内部查找,如果有,就直接拿来使用;

如果没有,就去上一级作用域寻找,如果再没有,再去上一级查找,以此类推;

如果一直到全局作用域都没有这个变量,那就会直接报错(该变量没定义)。


2、变量赋值规则


当给一个变量赋值的时候,就先要找到这个变量,再给他赋值,变量赋值规则是:

先在自己作用域内部查找,有就直接赋值;

没有就去上一级作用域内部查找;

还没有再去上一级;

如果一直到全局作用域都没有,那么就把这个变量定义为全局变量,再给他赋值。


相关文章
|
3天前
|
JavaScript 前端开发
js变量的作用域、作用域链、数据类型和转换应用案例
【4月更文挑战第27天】JavaScript 中变量有全局和局部作用域,全局变量在所有地方可访问,局部变量只限其定义的代码块。作用域链允许变量在当前块未定义时向上搜索父级作用域。语言支持多种数据类型,如字符串、数字、布尔值,可通过 `typeof` 检查类型。转换数据类型用 `parseInt` 或 `parseFloat`,将字符串转为数值。
9 1
|
26天前
|
存储 JavaScript 前端开发
解释 JavaScript 中的作用域和作用域链的概念。
【4月更文挑战第4天】JavaScript作用域定义了变量和函数的可见范围,静态决定于编码时。每个函数作为对象拥有`scope`属性,关联运行期上下文集合。执行上下文在函数执行时创建,定义执行环境,每次调用函数都会生成独特上下文。作用域链是按层级组织的作用域集合,自内向外查找变量。变量查找遵循从当前执行上下文到全局上下文的顺序,若找不到则抛出异常。
21 6
|
26天前
|
JavaScript
作用域和作用域链(js的问题)
作用域和作用域链(js的问题)
|
26天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
1月前
|
自然语言处理 JavaScript 前端开发
深入理解JS的执行上下文、词法作用域和闭包(中)
深入理解JS的执行上下文、词法作用域和闭包(中)
|
1月前
|
存储 自然语言处理 JavaScript
深入理解JS的执行上下文、词法作用域和闭包(上)
深入理解JS的执行上下文、词法作用域和闭包(上)
|
28天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
22 2
|
2天前
|
存储 JavaScript 前端开发
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗
|
1月前
|
JavaScript 前端开发
js开发:请解释什么是作用域(scope),并说明全局作用域、局部作用域和块级作用域的区别。
JavaScript中的作用域规定了变量和函数的可见性与生命周期。全局作用域适用于整个脚本,变量可通过全局对象访问,可能导致命名冲突和内存占用。局部作用域限于函数内部,每次调用创建新作用域,执行完毕后销毁。ES6引入的块级作用域通过`let`和`const`实现,变量仅在其代码块内有效,并有暂时性死区。作用域机制有助于代码组织和变量管理。
23 1
|
1月前
|
JavaScript 前端开发
JS作用域与作用域链
JS作用域与作用域链