美文网首页
js中函数的参数传递方式

js中函数的参数传递方式

作者: 沧澈 | 来源:发表于2019-01-07 10:00 被阅读0次

ECMAScript中所有函数的参数都是按值传递的。
也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。

  • 向参数传递基本类型值
    传递一个基本类型值时,被传递的值会被复给一个局部变量(arguments中的一个元素)
function add(num) {
    num += 10;
    return num;
}

var count = 20;
var res = add(count);
console.log(count); //20
console.log(res); //30

变量count作为参数传递给函数,在函数内部,参数num被加10,但是这一变化不会影响函数外部的count变量。

  • 向参数传递引用类型值
    传递一个引用类型值时,会把这个值在堆内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
function setName(obj) {
    obj.name = 'hello';
}

var person = new Object();
setName(person);
console.log(person.name);  //  hello

以上代码创建了一个对象,并将其保存在了变量person中,这个对象被传递到了setName函数中被复制给了obj。在函数内部,obj和person引用的是同一个对象,于是在函数内部为obj添加一个name属性后,外部的person也会有所反应,因为person 指向的对象在内存中只有一个,而且是全局对象。

但是函数的参数并不是按引用传递的,而是按值传递的。
function setName(obj) {
    obj.name = "hello";
    obj = new Object();
    obj.name = 'world';

}

var person = new Object();
setName(person);
console.log(person.name);  // hello

以上代码中,在把person传递给setName函数后,其name属性被设置为‘hello’。然后,又将一个新的对象赋值给obj,同时将其name设置为‘world’的新对象。但是,接下来再访问person.name时,显示的仍然是‘hello‘,这说明即使在函数内部修改了参数的值,但是原始的引用仍然不变。
实际上,当在函数内部重写obj时,这个变量的引用就是一个局部变量了,而这个局部变量会在函数执行完毕后立即被销毁。

参考:《javaScript高级程序设计》

相关文章

  • js中函数的参数传递方式

    ECMAScript中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变...

  • python 参数传递总结

    参数的传递 python中函数的参数通过赋值的方式来传递引用对象。下面总结通过总结常见的函数参数定义方式,来理解参...

  • js中的arguments对象

    《JavaScript高级程序设计》读书笔记 js中函数的参数与别的语言的参数有些不同。js中的函数不介意传递进来...

  • 数据结构与算法 javascript

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

  • js函数参数

    函数参数的传递的方式无非两种,传值和传址。js中基本数据类型的传递方式很明显就是传值。例子: Number 的值复...

  • js函数中参数的传递

    数据类型在 javascript 中数据类型可以分为两类:基本类型值 primitive type,比如Undef...

  • JS中函数的参数

    参数不是必需的 在JS函数中,通常要通过参数来传递数据。但是JS和其他编程语言不一样的地方在于,JS并不在乎你传递...

  • 函数式编程

    Time: 20190716 函数式编程的概念在JS中随处可见。 函数可以作为函数的参数进行传递。 函数就是变量。...

  • 第二课 js类和对象

    函数 js中函数可以作为参数传递 第一种写法 上面代码是将say方法作为参数传递给execute方法 第二种写法 ...

  • js类和对象

    函数 js中函数可以作为参数传递 第一种写法 上面代码是将say方法作为参数传递给execute方法 第二种写法 ...

网友评论

      本文标题:js中函数的参数传递方式

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