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

来源:互联网 发布:最好用的编程软件 编辑:程序博客网 时间:2024/06/05 20:37

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

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

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

 

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

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

原创粉丝点击