作用域和作用域链 —javascript面向对象高级
# 作用域和作用域链 #
## 1.作用域 ##
定义:函数声明时,会确定当前函数的作用域,所谓作用域就是作用的范围(地盘)
全局作用域:
a. window是顶层对象,是一切函数,变量,对象的终点,
b. 所以在全局范围内定义的函数或变量,它都是属于window对象的属性或方法。
c. 其作用域范围是全局,任何地方均能调用。
局部作用域:
a. 函数声明时,函数内部的作用域就是局部作用域,
b. 在函数内部通过var 声明的变量 和 声明式的函数均是该函数的私有变量或函数,
c. 一般情况下,函数外部不能访问函数内部的私有变量或函数
作用域链:
a.函数内部调用某个变量的时候,会在当前作用域中查找该变量是否被声明
b.如果没有被声明,就会去其上一层作用域中查找
c.直到查找到全局作用域,如果还是没有,则为not define
作用域和执行上下文的关系:
var a = 10, b = 10;
function fn(x){
var a = 100,c = 200;
function bar(x){
var a = 1000,d = 4000;
}
bar(100)
bar(200)
}
fn(10)
全局作用域 : 上下文环境内保存 a = 10,b = 10
fn作用域 : 上下文环境内保存 a = 100,x = 10 ,c = 200
bar作用域:上下文环境内保存 a = 1000,d =4000,x = 100(第一次调用) 200(第二次调用)
转载于:https://www.cnblogs.com/luowen075/p/6135839.html
作用域和作用域链 —javascript面向对象高级相关推荐
- 闭包 —JavaScript面向对象高级
# 闭包 # 我的理解:面试时,先说作用域链,再说闭包产生的原因,然后是垃圾回收GC,最后说闭包. a.一个函数内部声明的变量,就是它的私有变量. b.在javascript中特性中,函 ...
- javascript(面向对象,作用域,闭包,设计模式等)
javascript(面向对象,作用域,闭包,设计模式等) 1. 常用js类定义的方法有哪些? 参考答案:主要有构造函数原型和对象创建两种方法.原型法是通用老方法,对象创建是ES5推荐使用的方法.目前 ...
- Javascript的作用域,作用域链,闭包
1,作用域和作用域链概念 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期.在JavaScript中,变量的作用域有全局作用域和局部作用域两种. 1.1 全局作用域,在代码 ...
- javascript精雕细琢(三):作用域与作用域链
目录 引言 1.执行环境 2.作用域与作用域链 引言 作用域与作用域链是JS应用中无时无刻不在影响程序运行的关键属性,但是由于它的不可见性,或者说它存在的过于普遍,简直就像空气一样.所以对它的谈及,都 ...
- 图解 | JavaScript的作用域和作用域链
文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 图 / 自己画 ❥❥❥❥点个赞,让我知道你来过~❥❥❥❥ 前情提要: 题目 | let和var的区别(一.二) ...
- 深入理解Javascript作用域和作用域链
什么是作用域 作用域是代码运行时某些特定的部分中变量.函数和对象的可访问性,换句话说,作用域决定了代码块中变量和其他资源的可见性 作用域共有两种工作模型 词法作用域(静态作用域) 动态作用域 词法作用 ...
- JavaScript 开发进阶:理解 JavaScript 作用域和作用域链(上)
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理.今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望 ...
- JavaScript重难点解析4(作用域与作用域链、闭包详解)
JavaScript重难点解析4(作用域与作用域链.闭包详解) 作用域与作用域链 作用域 作用域与执行上下文 作用域链 闭包 闭包理解 将函数作为另一个函数的返回值 将函数作为实参传递给另一个函数调用 ...
- JavaScript 开发进阶:理解 JavaScript 作用域和作用域链
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理.今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望 ...
最新文章
- map(&:name)在Ruby中是什么意思?
- BugkuCTF-Misc:细心的大象
- 使用 Palette 让你的 UI 色彩与内容更贴合
- SpringBoot用JdbcTemplates访问Mysql
- WEB前端 vue学习一使用 vue-cli 搭建项目
- Linux里su报错bash不是目录,Linux基础:关于su 命令的的几个相关报错
- vuex构建vue项目_如何使用Vue.js,Vuex,Vuetify和Firebase构建单页应用程序
- android camera滑动,Android怎么实现小米相机底部滑动指示器
- vue底部跳转_Vue中底部tabBar切换及跳转
- microsoft store 安装包_LOL英雄联盟手游官方安装包
- c语言的按位取反运算符
- 剪贴板是计算机系统,Windows7电脑剪切板在哪?
- DNS请求报文和响应报文解析
- SSD-Tensorflow项目源码学习:将数据集转化为为TFR文件
- HEVC编码结构:Slice和Tile
- [linux学习笔记] GCC环境安装问题
- Android人脸检测方案汇总
- DES加解密算法原理详解与实现
- lua attempt to index field ? a nil
- 如何在采购管理中最大化利用技术?
热门文章
- 如何检查某个用户是否具有某个权限对象上定义的某种权限
- Webpack 10分钟入门
- 高中计算机省赛试题,西店中学计算机信息学竞赛测试试卷、答题卷和答案(一)...
- mysql 回表查询优化_MySQL中的回表查询与索引覆盖:一次百万级别分页查询使用Limit 从90秒到0.6毫秒的优化...
- 用iframe transform: scale() 缩小后点不到按钮_“打分”或者“打多少分”用英文可以怎样去表达?...
- python增量更新数据,Python中的增量最近邻算法
- java date postmax_Postman支持的几种数据类型请求方式
- python飞机大战资料-Python之游戏开发-飞机大战
- lotus php,LotusPhp笔记之:Cookie组件的使用详解
- sqlalchemy安装以及使用_防火阀的安装以及使用特点详细介绍