关于JS变量和作用域详解
ECMAScript 变量:
1.基本类型值(简单数据段)
2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象
------
动态属性: 只能给引用型值动态添加新属性,以便将来使用。
------
复制变量值 :
基本类型值的复制 → 在变量对象上创建一个新值 → 复制给新变量(互不影响)
引用类型值的复制 → 将存储在变量对象中的值复制到新变量分配空间中(复制的是一个指针,指向同一个对象,相互影响)
------
传递参数:
ECMAScript中所有函数的参数都是按值传递 。
(函数外部的值复制给函数内部的参数。
→ 可以把ECMA函数的参数想象成局部变量。)
原因解释:
说法一:
函数参数是一种局部变量,在外部值传递给函数参数,内部外部互不影,引用传递复制的是地址,所以他内务外部相互有影响。
说法二:对象角度(参数是一个对象 obj)
------
对象按值传递 → 参数对象和外部对象引用同一个对象 → 外部对象指向的对象在堆内存中只有一个,且是全局变量。
不要错认为是在局部作用在修改的对象在全局作用域(外部)反映出来的结果 → 函数内部的局部变量在函数执行完会立即销毁。
------
执行环境(有时候也简称“环境”)及作用域
执行环境定义了白嬢或函数有权访问其他数据决定了他们各自的行为 → 每个执行环境都有一个与之关联的变量对象 → 环境中定义的所有变量和函数都保存在这个对象。
------
每个函数都有自己的执行环境 → 当执行流进入一个函数时 → 函数环境会被推入一个环境栈中 → 在函数执行后将其弹出 → 把控制权返回给之前的执行环境
代码在一个环境执行中时,会创建变量对象的一个作用域链(scope chain)
作用域链用途:保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链的前端,始终都是当前执行的代码所在环境的变量对象
------
内部环境可以通过作用域链所有的外部环境,但是外部环境不能访问内部环境(环境的联系是线性的,有次序的 → 向上搜索作用域链以查询变量和函数名)
函数参数也被当做变量来对待
------
延长作用域链:
有些语句可以在作用域的前端链临时增加一个变量(变量在代码执行后移除)
1.try-catch语句的catch块
2.with语句
------
Javas没有块级作用域
ECMAScript 变量:
1.基本类型值(简单数据段)
2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象
------
动态属性: 只能给引用型值动态添加新属性,以便将来使用。
------
复制变量值 :
基本类型值的复制 → 在变量对象上创建一个新值 → 复制给新变量(互不影响)
引用类型值的复制 → 将存储在变量对象中的值复制到新变量分配空间中(复制的是一个指针,指向同一个对象,相互影响)
------
传递参数:
ECMAScript中所有函数的参数都是按值传递 。
(函数外部的值复制给函数内部的参数。
→ 可以把ECMA函数的参数想象成局部变量。)
原因解释:
说法一:
函数参数是一种局部变量,在外部值传递给函数参数,内部外部互不影,引用传递复制的是地址,所以他内务外部相互有影响。
说法二:对象角度(参数是一个对象 obj)
------
对象按值传递 → 参数对象和外部对象引用同一个对象 → 外部对象指向的对象在堆内存中只有一个,且是全局变量。
不要错认为是在局部作用在修改的对象在全局作用域(外部)反映出来的结果 → 函数内部的局部变量在函数执行完会立即销毁。
------
执行环境(有时候也简称“环境”)及作用域
执行环境定义了白嬢或函数有权访问其他数据决定了他们各自的行为 → 每个执行环境都有一个与之关联的变量对象 → 环境中定义的所有变量和函数都保存在这个对象。
------
每个函数都有自己的执行环境 → 当执行流进入一个函数时 → 函数环境会被推入一个环境栈中 → 在函数执行后将其弹出 → 把控制权返回给之前的执行环境
代码在一个环境执行中时,会创建变量对象的一个作用域链(scope chain)
作用域链用途:保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链的前端,始终都是当前执行的代码所在环境的变量对象
------
内部环境可以通过作用域链所有的外部环境,但是外部环境不能访问内部环境(环境的联系是线性的,有次序的 → 向上搜索作用域链以查询变量和函数名)
函数参数也被当做变量来对待
------
延长作用域链:
有些语句可以在作用域的前端链临时增加一个变量(变量在代码执行后移除)
1.try-catch语句的catch块
2.with语句
------
Javas没有块级作用域
关于JS变量和作用域详解的更多相关文章
- Python中的变量和作用域详解
Python中的变量和作用域详解 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部 ...
- JS变量的提升详解
此次说明的是var与function的变量提升 那么先看一段代码 <script type="text/javascript"> console.log(test); ...
- 详解js变量、作用域及内存
详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4 原文出处: trigkit4 基本类型值有:undefined,NUll,Boolean,Number和Strin ...
- PHP常量、变量作用域详解(一)
PHP 中的每个变量都有一个针对它的作用域,它是指可以在其中访问变量(从而访问它的值)的一个领域.对于初学者来说,变量的作用域是它们所驻留的页面.因此, 如果你定义了 $var,页面余下部分就可以访问 ...
- PHP变量作用域详解(二)
学过C的人用PHP的时候一般会相当顺手,而且感到PHP太方便太轻松.但在变量作用域这方面却与C有不同的地方,搞不好会相当郁闷,就找不到错误所在.昨晚就与到这么一个问题,是全局变量在函数中的问题.今天搜 ...
- Node.js中环境变量process.env详解
Node.js中环境变量process.env详解process | Node.js API 文档http://nodejs.cn/api/process.html官方解释:process 对象是一个 ...
- Java基础-变量的定义以及作用域详解
Java基础-变量的定义以及作用域详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字面量 常量(字面量)表示不能改变的数值(程序中直接出现的值).字面量有时也称为直接量,包 ...
- js调试工具Console命令详解
这篇文章主要介绍了js调试工具Console命令详解,需要的朋友可以参考下 一.显示信息的命令 复制代码 代码如下: < !DOCTYPE html> < html> &l ...
- js 闭包的用法详解
一.闭包 实现可重用的局部变量,且保护其不受污染的机制. 外层函数包裹受保护的变量和内层函数. 内层函数专门负责操作外层函数的局部变量. 将内层函数返回到外层函数外部,反复调用. 二.作用域 子函数会 ...
随机推荐
- 关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、abort()R6010等故障模块排查及解决方法
一.常见故障介绍 最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不 ...
- mysql网文收录
1.分布式事务 1) 聊聊分布式事务,再说说解决方案 https://www.cnblogs.com/savorboard/p/distributed-system-transaction-cons ...
- GIT讲解
一.什么是Git: Git是目前世界上最先进的分布式版本控制系统. 二.为什么要用版本控制系统: 1.更方便的存储版本 2.恢复之前的版本 3.更方便的进行对比 4.协同合作 三.如何安装GIT: 1 ...
- PB连接ORALCE数据库方法
本地必须配置连接服务
- node-red 流程的导入导出
流程的导入导出 流程的导出 选中所要导出的流程,点击右上角三条杠按钮 有两个选项,导出到剪贴板和库 1. 导出到剪贴板 导出到剪贴板可以复制,粘贴到任何地方 [{,,,,,,"wires&q ...
- .NET/C# 检测电脑上安装的 .NET Framework 的版本
原文:.NET/C# 检测电脑上安装的 .NET Framework 的版本 如果你希望知道某台计算机上安装了哪些版本的 .NET Framework,那么正好本文可以帮助你解决问题. 本文内容 如何 ...
- C# vb .net实现灰度化特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的灰度化呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步: ...
- HTML基本代码
HTML 今天回顾html,总结一下今日所学内容. -------------------正文-------------------------- 目的:通过一些基础的标签制作关于LOL的静态网页 所 ...
- Node学习之(第三章:art-template模板引擎的使用)
前言 大家之前都有使用过浏览器中js模板引擎,其实在Node.js中也可以使用模板引擎,最早使用模板引擎的概念是在服务端新起的. art-template art-template是一款高性能的Jav ...
- SSRF绕过IP限制方法总结
SSRF绕过IP限制方法总结 - Summary of SSRF methods for bypassing IP restrictions -https://www.cnblogs.com/iAmS ...