[JavaScript] 函数作用域问题
理解以下代码:
function foo() {let n = 1return function bar() {let m = 1function show() {console.log('m:', ++m)console.log('n:', ++n)}show()}
}
let a = foo()
console.log(a)
a()
a()
首先看看这个a是个什么?
是返回回来的一个函数——a是一个函数
那么n和m哪个被保留了呢?
n被保留了,而m没有,每次调用a都会重新定义一个m出来。
更进一步
function foo() {let n = 1this.sum = function () {console.log(++n)}
}let a = new foo()
console.log(a)
a.sum()
这时n是否被保留了呢?
a.sum()
a.sum()
a.sum()
每次new的时候才开辟一块新的内存来存放这个东西,如下:
let a = new foo()
console.log(a)
a.sum()
a = new foo()
a.sum()
a.sum()
[JavaScript] 函数作用域问题相关推荐
- 浅谈JavaScript 函数作用域当中的“提升”现象
在JavaScript当中,定义变量通过var操作符+变量名.但是不加 var 操作符,直接赋值也是可以的. 例如 : message = "hello JavaScript ! " ...
- JavaScript函数作用域
JavaScript函数作用域 JavaScript作用域 作用域: 作用域指一个变量的作用范围 JS中一共两种作用域: (1)全局作用域 (2)函数作用域(局部作用域) 1.全局作用域 直接写在sc ...
- javascript函数作用域与闭包
8.8. 函数作用域与闭包 如第四章所述,JavaScript函数的函数体在局部作用域中执行,局部作用域不同于全局作用域.本章将解释这些内容和相关的作用域问题,包括闭包.[*] [*] ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- JavaScript从作用域到闭包
目录 作用域 全局作用域和局部作用域 块作用域与函数作用域 作用域中的声明提前 作用域链 函数声明与赋值 声明式函数.赋值式函数与匿名函数 代码块 自执行函数 闭包 作用域(scope) 全局作用域 ...
- javascript中函数作用域和声明提前
javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域. 函数作用域:变量在声明它们的 ...
- 七、深入JavaScript函数,对象和作用域(三)
@Author:Runsen @Date:2020/5/26 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...
- JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- JavaScript 函数(作用域以及闭包)
JavaScript 函数(作用域以及闭包) ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量或函数都保存在这个对象中, ...
最新文章
- 让你的 conda “回滚”到以前版本的环境
- Apache CXF实现WebService发布和调用
- vuejs之【router-link】大全(二)
- java 模板方法设计模式_Java中的模板方法设计模式
- C#中的equals()和==
- 学 Python 最大的 1 个误区,看看你中招了吗?
- 面试官问我:如何减少客户对交付成果的质疑
- Visual Studio 2008创建项目(ATL)
- SQL Server 分离
- Zend Optimizer not installed可能原因及解决方法
- linux centOS可视化界面
- PS · class 1
- C语言数组比较相等memcmp,使用memcmp比较两个变量结果一定吗?
- linux系统的wps办公软件,wps32位/64位linux版办公软件-WPS Office 2019 For Linux下载V11.1.0.10161官方版-西西软件下载...
- PowerApps 连接Azure Sql
- 物联网 | HASS+MQTT+树莓派室内监测小型物联网系统
- 限时免费 | 12月6日,广州保利洲际酒店,ABC Summit 2018云智峰会来了!
- 数码管识别c语言代码,OpenCV之七段数码管识别(含代码)
- blackberry j2me 发送SMS短信
- 推荐 Mac 平台上常用的 5 款 PDF 阅读编辑软件
热门文章
- IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成
- 手撸一个JdbcTemplate,带你了解其原理
- TensorFlow XLA优化与Memory
- 关键任务应用程序依赖于故障保护存储器
- CVPR2020:三维点云无监督表示学习的全局局部双向推理
- 常用深度学习框——Caffe/TensorFlow / Keras/ PyTorch/MXNet
- ValueError: invalid literal for int() with base 10: “ ”
- Android 跳转Activity 的时候出现闪屏问题处理
- error: unbound prefix. Message{kind=ERROR, text=error: unbound prefix., sources=[E:\work\me\fragment
- mysql 查看表结构,字段的基本信息(简单明了)。