大数据 Shell脚本 IntelliJ IDEA教程 私有云平台 powershell animation javafx razor 网络营销推广 iot系统 matlab求矩阵最大值 leach算法 java手机验证码 div字体加粗 nfc卡片 爬虫数据清洗 python图形化编程 python中re模块 python的开发工具 javamysql java变量类型 java获取本机ip java字符 java格式化日期 java集成开发环境 linux系统教程 网页游戏代码 视频字幕提取器 脚本大全 多面硬币 数独软件 子节点 sendto函数 设备管理器在哪 jpg格式转换器 stata 一键root软件下载 xlwt 论文封面怎么做 gmail邮箱打不开
当前位置: 首页 > 学习教程  > 编程语言

ECMAScript变量访问与传递参数

2021/2/13 20:22:28 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

变量访问 ECMAScript变量包含两种不同的类型的数据原始值和引用值。 原始值就是最简单的数据(Undefined,Null,Boolean,Number,String,Symbol)。 引用值是由多个值构成的对象(Object)。 保存原始值的变量是按值访问的&#xff0c…

变量访问

ECMAScript变量包含两种不同的类型的数据原始值引用值
原始值就是最简单的数据(Undefined,Null,Boolean,Number,String,Symbol)。
引用值是由多个值构成的对象(Object)。

保存原始值的变量是按值访问的,因为我们操作的就是存储在变量中的实际值。

引用值是保存在内存中的对象,与其它的语言不相同的是,js不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象的时候,实际操作的是对该对象的引用而非实际的对象本身。因此,保存引用值的变量是按引用访问的。

传递参数

ECMAScript中所有的函数的参数都是按值传递的。这就意味着函数外的值会被复制到函数内部的参数中,就如同一个变量复制到另一个变量中一样。

来一个demo:

	function demo ( number ) {
		number += 10;
		return number;
	}
	
	let count = 20;
	let result = demo( count ); //函数内部将操作完之后的值返回,用result接收

	//如果说变量是按引用传递,则count的值就不会是20,而是进过number += 10之后成为30;
	console.log( count );	//20
	
	console.log( result );	//30

接下来创建一个对象:

 	function setStudent ( object ) {
 		object.score = 100;
 	}
 	let student = new Object();
 	setStudent( student );
 	console.log( student.score );    //输出:100
	/*
		不是所有的函数的形参都是按值传递的吗?怎么这里好像是按引用传递的了?
		这是因为在函数的内部,student和object都指向同一个对象,及时对象是按值传入函数的,
		object也会通过引用访问对象。当函数内部给object增添了score属性,函数外部的对象也会
		反映这个变化,因为object指向的对象保存在全局作用域的堆内存上。
		*/

接下来一个案列,你就会清楚其中的门道了。

	function setStudent ( object ) {
		object.score = 100;
		object = new Object();
		object.score = 99;
	}
	let student = new Object();
	setStudent( student );
	console.log( student.score );   // 100;
	
	/*
	why ? ? ? ?
	当参数object传入setStudent()时,score属性被设置为100,然后变量object被设置为新对象,
	且score属性为99,如过Student是按引用传递的,那么student应该将指针改为指向score属性为
   99的对象,但是score的值任然是100;其中object = new Object()所产生的对象在
   函数结束的时候就被销毁了。
   */


本文链接: http://www.dtmao.cc/news_show_700453.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?