js中的参数传递

来源:互联网 发布:辐射4低配置优化 编辑:程序博客网 时间:2024/05/22 12:54

注意:js中的参数遵从值拷贝原则,那到底什么是值拷贝呢?我们根据代码好好分析一下就明白了

1.对于基本数据类型

在js中,使用函数的时候如果参数是基本数据类型
<script type="text/javascript">var num=100;function add(num){num+=100;console.log(num);}add(num);//输出200console.log(num);//输出100</script>
注意请看上面代码的输出情况,第一个输出的是200,第二个输出的100,所以这就是所谓的值拷贝,就是相当于参数num在函数内部新创建了一个num变量,可以这样理解当外面的参数传递进来之后外面的变量已经和函数内部没有关系了。所以会输出一个200,一个100.

2.对于引用数据类型

在js中如果参数是引用数据类型,那么传递的就是引用数据类型的指针。说到指针就会涉及到栈,堆等等内容,这里不做其他内容的过多介绍。暂时可以记住:引用数据类型在内存的栈空间中存储的是指针,在堆空间中存储的是指针指向的内容。
<script type="text/javascript">var obj={name:"aa"}function fun(obj){console.log(obj.name);//输出aaobj.name="bb";console.log(obj.name);//输出bb}fun(obj);console.log(obj.name);//输出bb</script>
观察上面的代码可以看出当参数obj传递进入函数之后,如果函数内部对obj进行了操作,那么原来的obj也会发生改变。

3.总结

上面的两种情况就是在js中传参的原则,也就是所谓的值拷贝,其实我觉得其实只要记住一点引用数据类型传递是指针就可以啦。
原创粉丝点击