美文网首页
JavaScript中的参数传递问题

JavaScript中的参数传递问题

作者: novaDev | 来源:发表于2018-04-09 18:12 被阅读0次

先来热身:

// 代码片段1

var n = 10
function addTen(n) {
    n += 10
}
addTen(n)
//此时n是20吗?
// 代码片段2

var obj = {}
function addName(obj) {
    obj.name = 'obj'
}
addNunber(obj)
//此时obj.name == 'obj'吗?
// 代码片段3

var obj = {}
function setNull(obj) {
    obj = null
}
setNull(obj)
//此时obj == null吗?

揭晓谜底:

代码片段1 n 仍然是10
代码片段2 obj.name == 'obj'
代码片段3 n != null

原理分析

  • 代码片段1
    // 代码片段1
    
    var n = 10
    function addTen(n) {
        n += 10
    }
    addTen(n)
    
    外部的n的值被复制给addTen函数的一个局部变量n,两个n只是值相等,但是没有任何引用关系,所以当内部的n发生变化时,外部的n不会跟着发生变化
  • 代码片段2
    // 代码片段2
    
    var obj = {}
    function addName(obj) {
        obj.name = 'obj'
    }
    addNunber(obj)
    
    外部的obj被复制给addName的一个局部变量obj,内部的obj可以根据引用,访问外部的obj,当对obj进行操作或访问的时候,实际上操作的是外部obj
  • 代码片段3
    // 代码片段3
    
    var obj = {}
    function setNull(obj) {
        obj = null
    }
    setNull(obj)
    
    外部的obj被复制给addName的一个局部变量obj,因为内部obj只是外部obj的一个拷贝,所以将内部obj赋值为null的时候,只是改变了内部obj的引用,不会影响外部obj

相关文章

  • 数据结构与算法 javascript

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

  • JavaScript中的参数传递问题

    先来热身: 揭晓谜底: 原理分析 代码片段1// 代码片段1var n = 10function addTen(n...

  • javascript的参数传递问题

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

  • 值传递or引用传递

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

  • 表达式和控制体

    原文链接date:20170707 输入参数和输出参数 在javascript中,函数可以传递参数作为输入;Sol...

  • 数组

    Math.sqrt(x) Math.abs(x) Javascript中,函数的参数传递方式都是按值传递,没有引用...

  • JavaScript 传递参数

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

  • JavaScript参数传递

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

  • 2019-06-26

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

  • 系统学习 JavaScript 的笔记【4】

    JavaScript 函数 在函数中只要执行完了 return ,函数就会停止并且退出 参数的理解,参数的传递在 ...

网友评论

      本文标题:JavaScript中的参数传递问题

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