作用域和自由变量的介绍
文章目录
- 前言
- 一、什么是作用域?
- 二、作用域有几种?
- 三、自由变量
- 四、作用域链
- 五、变量提升(预解析)
前言
一、什么是作用域?
作用域就是一个变量可以使用的范围。
二、作用域有几种?
作用域一共有三种。
分别是:
1.全局作用域
2.函数作用域
3.块级作用域(Es6新增的方法)
var a=100; //全局
function fn(){ //函数
var b=200;
if(true){ //块级
let c=300;}
}
注意::js中首先有一个最外层的作用域,全局作用域; js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套;
es6中新增了块级作用域(大括号,比如:if{},for(){},while(){}…);
如图所示;
es6作用域,只适用于const,let
三、自由变量
自由变量:当前作用域没有定义的变量
注意:
1.一个变量在当前作用域没有定义,但被迫使用了
2.向上级作用域,一层一层依次寻找,直到找到为止
3.如果到全局作用域都没找到,就报错 xx is not defined
四、作用域链
自由变量的向上级作用域一层一层查找,直到找到为止,最高找到全局作用域,就形成了作用域链。
五、变量提升(预解析)
var声明的变量,function声明的函数存在变量提升
let const 不会变量提升
- javascript中声明并定义一个变量时,会把声明提前,以下会先打印出undefined,再打印出10
console.log(a)
var a = 10
console.log(a)
相当于
var a
console.log(a);//undefined
a = 10
console.log(a) //10
- (自定义函数/命名函数)函数声明也是,以下函数相当于把整个fn提到作用域的最上面,所以调用fn时会正常打印jack
fn('jack');//jack
function fn (name){console.log(name)
}
- 不过函数表达式不行,以下是一个函数表达式,JavaScript会把var fn提到作用域最上面,没有吧函数提上去,所以会报错。
fn("jack");//报错
var fn = function(name) {console.log(name);
};
六:函数的预解析高于变量的预解析
作用域和自由变量的介绍相关推荐
- js爬山之作用域和自由变量~~狂徒李四
作用域的种类 全局作用域 js中最外层 的作用域就是全局作用域 函数作用域 js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套: 块级作用域(es6新增) es6 ...
- JS作用域和自由变量
作用域: 简单来说作用域就是一个变量可用的范围 作用域有以下三种 1. 全局作用域 在最外层定义的变量或者方法,全局都可以使用,所以是全局作用域. 2. 函数作用域(局部作用域) js中可以通过函数来 ...
- 【作用域、自由变量】
作用域.作用域链.自由变量 一.作用域 二.自由变量 一.作用域 作用域:一个变量可以使用的范围 全局作用域.函数作用域.块级作用域(Es6新增) js中首先有一个最外层的作用域,全局作用域: js中 ...
- 关于作用域和自由变量的理解
一.作用域 1.什么是作用域 作用域就是一段代码可以起作用的范围.决定了变量的适用范围. 全局作用域 最外层的作用域叫做全局作用域. 函数作用域 js中可以通过函数来创建一个独立作用域称为函数作用域, ...
- 前端学习(1700):前端系列javascript之作用域和自由变量
- 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
js基础知识中的作用域和闭包 一.作用域 1.作用域.自由变量简介 (1)作用域定义 (2)作用域实例演示 (3)自由变量定义 (4)自由变量实例演示 2.作用域链简介 (1)作用域链定义 (2)作用 ...
- 【一天时间|JavaScript基础】作用域和闭包
一天时间系列文章是博主精心整理的面试热点问题和难点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速并高效地审视前端面试知识.直击技术痛点,主动出击,精密打击,这才是面试拿到高薪的秘诀 ...
- Python变量作用域的规则以及如何搜索内置作用域
喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!有不懂的问题可以私聊我哦! **作用域:**是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围 ...
- 从零学前端第十四讲:AngularJs进阶-作用域和控制器
修真院Web工程师零基础全能课 本节课内容 AngularJs进阶-作用域和控制器 主讲人介绍 沁修,葡萄藤技术总监 项目经验丰富,擅长H5移动项目开发. 专注技术选型.底层开发.最佳代码实践规范总结 ...
最新文章
- JVM虚拟机参数配置官方文档
- Java多线程:乐观锁、悲观锁、自旋锁
- 电子邮箱里面的服务器,搭建电子邮件服务器
- 【转】三、QT例子-打开一个图片并且显示
- Spring Boot整合MyBatis
- 如何把女儿培养进麻省理工学院?博士爸爸的40封家书,堪称家庭教育的典范!...
- Ubuntu用户及用户组管理命令
- angularjs 事件指令
- del退役了/del 滚回来了
- JS-元素大小深入学习-offset、client、scroll等学习研究笔记
- 怎么样装mysql_如何安装MySQL数据库
- MES(制造企业生产过程执行管理系统)
- 一个游戏是如何被设计和开发出来的
- 电脑上有什么类似全能扫描王的软件?这4款扫描app1分钟帮你搞定几十张图片
- 岁月温柔-23 妈妈转到省医院第3天 突然icu有床位了
- S7-PLCSIM Advance ,解决 Error Code: -30,LicenseNotFound问题解决和期限21天限制的问题,对版本V1.0 V2.0 V3.0有效
- java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 'groupName'
- 慧数纵览:日产在华三大工厂将减产30,000辆
- DDD之实体与值对象
- 代码随想录算法训练营第九天