javascript和c++的语法不同之处整理

本文探讨了JavaScript中函数参数的传递方式,特别是object类型的传递机制,并对比了C++中的相关概念,帮助理解JavaScript中按值传递的具体表现。

这是我个人学习j'avascript的心得,由于正在学习中,所以会不断更新,算是给自己做一次整理总结。

1,javascript中的所有函数都是按值传递的,但是在传递object类型的时候,会感觉起来是按引用传递。书上说这是因为object对象在堆内存中只有一个,而且是全局对象。我觉得全局变量的观点站不住脚,在c++中全局变量按值传递也不会改变原来的值。但是object在堆内存中,在c++中,动态分配的内存是在对内存中的,一般就是指针,而指针在传递过程中正好符合javascript表现的特性,所以可以这样理解,javascript的语法中,所有的object都是指针。

在温习一下堆内存和栈内存的区别,堆内存专门用来存储动态申请的内存,是一种先进先出的数据结构。栈内存用来存放预先申请好的内存,是一种先进后出的数据结构。

 

我觉得作者〈js高级程序设计〉的作者不太了解c++语法啊。所以才解释了一堆,搞得我这个c++程序员一头雾水。c++中函数参数传递有三种,按值传递,按指针传递,按引用传递。按值传递的时候,程序会给变量申请一块临时内存,用于复制需要传入的对象,然后在函数体内七搞八搞也不会影响原先的值了。按指针传递则是复制指针,然后对这个复制后的指针指向的内存块七搞八搞,复制后的指针和原先指针指向的是同一个内存块,你七搞八搞,当然会影响原来的值。按引用传递就跟简单了,直接给原来的对象换一个名字,然后直接对本人七搞八搞,必然影响了原来的值啊。

javascript的函数都采用按值传递,也就是都会复制一次,但是由于object对象是指针,所以复制之后,还是指向原来的内存块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值