美文网首页程序员
JavaScript的参数传递

JavaScript的参数传递

作者: 不良怪兽 | 来源:发表于2015-01-09 13:20 被阅读130次
一、前言

ECMA中所有函数的参数都是按照值传递。

二、基本数据类型

在向函数传递基本数据类型的时候,被传递的值会被复制给一个局部变量(arguments对象的一个元素)。
<pre>
<code>
function test( x ) {
x = 10; //第一次赋值
console.log( 'x1 : ' + x );
console.log( 'arguments1 : ' + arguments )
console.log( 'arguments[0]1 : ' + arguments[0] )

arguments[0] = 100;

console.log( 'x2 : ' + x );    
console.log( 'arguments2 : ' + arguments )
console.log( 'arguments[0]2 : ' + arguments[0] )

};

test(5);
</code>
</pre>

<pre>
<code>
function test( num ) {
num = num + 10;
return num;
};

var num = 20;
var result = test( num );
console.log( 'num : ' + num );
console.log( 'result : ' + result );
</code>
</pre>

三、引用数据类型

在向函数传递引用数据类型的时候,会把这个值的内存地址复制给一个局部变量。所以局部变量的变化会反映到函数外部。
<pre>
<code>
function setName( obj ) {
obj.name = '卢林';
};

var lou = new Object();
window.setName( lou );
console.log( lou.name );

function setName( obj ) {
obj.name = '卢林';
//重新new
obj = new Object();
obj.name = 'others'; //其实已经不是传入的内存地址
};

var lou = new Object();
window.setName( lou );
console.log( lou.name );
</code>
</pre>
其实原理很简单,引用类型传入的是内存地址的值(当然JavaScript操作内存地址),比如是8bit,内存地址是:1100 1010,指向的内容是person对象。所以你修改了name属性会影响到函数外部。

原文链接:<a href="http://blog.51yuekan.com/2014/11/24/2014-08-02-javascript-arguments/">http://blog.51yuekan.com/2014/11/24/2014-08-02-javascript-arguments/</a>

相关文章

  • 值传递or引用传递

    javascript都是按值传递 javascript的函数的参数传递,传递的都是值,参数是 Object 类型的...

  • 数据结构与算法 javascript

    基础概念 javascript中,函数的参数传递方式都是按值传递,没有按引用传递的参数。但是javascript中...

  • JavaScript 传递参数

    ECMAScript 中所有函数的参数都是按值传递的,言下之意就是说,参数不会按引用传 递,虽然变量有基本类型和引...

  • JavaScript参数传递

    《javascript高级程序设计》4.1.3:所有函数的参数都是按值传递的就是说把函数外部的值赋值给函数内部的参...

  • 2019-06-26

    深入理解JavaScript 参数按值传递 定义:ECMAScript中所有函数的参数都是按值传递的。 值传递:函...

  • JavaScript的参数传递

    一、前言 ECMA中所有函数的参数都是按照值传递。 二、基本数据类型 在向函数传递基本数据类型的时候,被传递的值会...

  • JavaScript函数的参数传递

    JavaScript函数的参数传递取决于参数的类型: 若参数为基本类型,那么按值传递 若参数为引用类型,那么按共享...

  • [JS开发者应懂的33个概念]3. 值类型和引用类型

    JavaScript 之 函数参数的传递 按值传递 继上篇说的,JavaScript的基本数据类型有7种:null...

  • 再学JS--函数参数传递类型

    JavaScript的函数参数传递分为按值传递、按引用传递以及按共享传递。 按值传递 什么是按值传递? 把函数外部...

  • 深入学习JavaScript-函数&闭包

    函数 理解参数 JavaScript函数不介意传递多少个参数,也不介意传递参数的数据类型。也就是说函数定义接受多少...

网友评论

    本文标题:JavaScript的参数传递

    本文链接:https://www.haomeiwen.com/subject/fakfxttx.html