参考:
Initialization of functions and variables
Javascript函数、变量的初始化顺序:
1,预执行期:
- a.函数声明被初始化,放置到全局变量(全局上下文环境)window中
- b.var声明的变量被放置到全局变量(全局上下文环境)window、或者var所在的上下文环境如函数内部中,初始值为undefined
- c.因此函数声明的函数名字、var声明的变量名字不能重复
2,执行期:
- a.当代码执行到时,变量赋值才会发生。非var声明的变量也只在代码执行到后才被创建,然后放置到全局变量(全局上下文环境)window中
Javascript上下文环境:
全局上下文环境:Window
函数上下文环境:在函数内部使用var声明的变量是本地变量,出了函数范围后会被垃圾回收。
闭包不会被垃圾回收。
即var声明的变量,在
预执行期都会被放到相应的
上下文环境中,然后在执行期,相应上下文环境中的变量会被赋值。
{},for循环等不存在自己的上下文环境,如下:
// 下面2段变量声明的效果是一样的,因为在预执行期,var声明的变量都会被创建并赋值为undefined.
var i = 1
{
i = 5
}
i = 1
{
var i = 5
}
// for循环没有自己的上下文环境,其使用的上下文环境是for循环代码所在的上下文环境。
// 而在Java、C等语言中,for循环内部的变量在循环结束后是不在存活的
for(var i=0; i<5; i++) { }
alert(i) // 5, variable survives and keeps value
分享到:
相关推荐
文章目录变量提升执行上下文全局执行上下文函数执行上下文执行上下文栈作用域例题举个栗子 执行上下文栈:举个栗子 变量提升+执行上下文栈:举个栗子 预处理顺序举个栗子 预处理举个栗子 顺序执行举个栗子 作用域举...
在这篇文章里,我将深入研究JavaScript中最基本的部分——执行上下文(execution context)。读完本文后,你应该清楚了解释器做了什么,为什么函数和变量能在声明前使用以及他们的值是如何决定的。 1、EC—执行环境...
14.9.3 继承和上下文选择器 14.10 定位元素和层 14.10.1 绝对定位 14.10.2 〈div〉容器 14.10.3 绝对定位 14.10.4 相对定位 14.10.5 z索引和三维 14.11 如何与JavaScript融合...
函数上下文 11 对象字面量与数组定义 11 流程控制 12 字符串插值法 14 循环和列表解析 14 数组 15 别名和存在操作符 16 类 17 实例属性 18 静态变量 19 继承与Super 20 Mixins 21 扩展类 22 CoffeeScript惯用法 24 ...
此选项初始化 QR 编码器。 在此选项中,您可以设置大小、边距和校正级别(详见下文)。 特性 以下是可以传递给打印函数的有效属性。 尺寸(可选) 此属性用于设置返回的 QR 编码的 PNG blob 的大小。 大小是具有匹
这是学习《AngularJS权威指南》并测试1.4版本中的变化的练习项目run 用于应用的初始化对表达式进行的任何操作,都会在其所属的作用域内部执行,因此可以在表达式内部调用那些限制在此作用域内的变量,并进行循环、...
当React被加载时,它执行检查以检测它是否在文档的上下文中执行。 因此,在测试React组件或使用JSDOM模拟DOM时,必须确保在加载React之前初始化文档。 该模块的目的是减少此样板并在单个调用中创建预期的全局变量。 ...
02 上下文管理协议 04 异常的构成简单了解 05 描述符应用 08 类的装饰器的基本原理 09 类的装饰器增强版 10 类的装饰器的应用 11 自定制property 12 自定制property流程分析 13 自定制property实现延迟计算功能 14 ...
初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的...
初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的...
初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的...
初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的...
原因是,在javascript中,this代表着当前对象,会随着程序的执行过程中的上下文改变,在wx.request({});方法的回调函数中,对象已经发生改变,所以已经不是wx.request({});方法对象了,data属性也不存在了。官方的...
初始化扩展模块 组件的数据结构 组件的类命令 组件实例命令 配置和重新配置属性 指定组件属性 时钟的显示 窗口事件过程 最后的清除工作 第47章 c函数库概览 tclc函数库概览 tk c函数库概览 第7部分 各...
解释器会将声明移到其上下文的开头,将初始化保留在原先的位置。 建议:如果代码很复杂,请在开头声明变量 本练习通过控制台中显示的功能展示提升的工作原理,然后展示应用提升后的外观。 基本服务器 文件夹01_...