javascript 变量引用-JavaScript 变量类型和变量作用域详细说明

2023-08-29 0 4,185 百度已收录

变量类型

ECMAScript 变量可能包含两种不同类型的数据值:原始类型和引用类型

基本型

原始类型是指简单的数据段。 有五种基本数据类型:未定义、空、布尔、数字和字符串。 原始数据类型是按值访问的,因此您可以操作存储在变量中的实际值。

复制变量值

将基本类型的值从一个变量复制到另一个变量会在变量对象上创建一个新值,然后将该值复制到为新变量分配的位置。 例如:

变量数1=5; var num2=num1 复制前的变量对象

复制变量对象

参考类型

引用类型是可能包含多个值的对象。 引用类型的值是存储在显存中的对象。 JavaScript 不允许直接访问视频内存中的位置。 当你操作一个对象时,你实际上是在操作对该对象的引用,而不是实际的对象。 因此,引用类型的值是通过引用来访问的。

动态特性

对于引用类型值,我们可以向它们添加属性和方法,也可以修改和删除它们的属性和技术。 如果对象没有被销毁或者属性没有被删除javascript 变量引用,那么属性仍然存在,但是我们不能向原始值添加属性。 例如:

var person = new Object(); person.say = '你好警报(person.say); //'hello'复制变量值

将引用类型值从一个变量复制到另一个变量时,存储在变量对象中的值的副本也会放置在为新变量分配的空间中。 该值的副本实际上是指向存储在堆上的对象的指针。 复制后,两个变量实际上将引用同一个对象,更改一个变量将影响另一个变量。 例如:

var obj1 = 新对象(); var obj2 = obj1 obj1.say = '你好'; 警报(obj2.say); // “你好”

传递参数

ECMAScript中所有函数的参数都是按值传递的,函数外部的值被复制到函数内部的参数中。 当基本类型值传递给参数时,传递的值将被复制到局部变量; 当引用类型值传递给参数时,该值在内存中的地址被复制到局部变量中,因此局部变量的更改将反映在函数外部。 例如:

函数 addTen(num) { num = 10; 返回号码; 变量计数 = 20; var 结果 = addTen(count); 警报(计数); //20 警报(结果); //30 执行环境及范围

执行环境定义变量或函数可以访问的其他数据并确定它们各自的行为。 全局执行环境是最里面的执行环境。 在WEB浏览器中,全局执行环境被视为一个窗口对象,因此全局变量和属性被创建为窗口的属性和方法。 每个函数都有自己的执行环境。 当执行流进入函数时,函数的环境被扔到环境堆栈上。 函数执行后javascript 变量引用,堆栈将其弹出并将控制权返回到先前的执行上下文。 当代码在环境中执行时,它会创建可变对象的作用域链。 作用域链的目的是确保对执行环境可访问的所有变量和函数的有序访问。 作用域链的后端始终是当前代码行所在的变量对象。 作用域链中的下一个变量对象来自外部环境,然后下一个变量对象来自下一个外部环境。 这会传递到全局环境,并且全局执行环境中的变量对象仍然是作用域链中的最后一个对象。 标识符解析是沿着作用域链逐步搜索标识符的过程。 搜索过程始终从作用域链的后端开始,然后一直返回,直到找到标识符。

内部环境可以通过作用域链访问所有外部环境,但是外部环境不能访问内部环境中的任何变量和函数。

无块作用域

JavaScript 中没有块级作用域,例如:

if(true){var color='blue';}alert(color);//如果函数中没有用var声明“blue”变量,则会将其修改为全局变量,例如:

函数 add(num1, num 2) { sum = num 1 num 2; 返回总和; } var 结果 = add(10, 20); 警报(总和); // 以上 30 就是本文的全部内容。 希望对您的学习有所帮助并支持我们。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 变量引用-JavaScript 变量类型和变量作用域详细说明 https://www.wkzy.net/game/171747.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务