在javascript中数组是引用传递的。先来看一段代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>数组</title> <script type="text/javascript"> function xxx(ab) { ab = 10; } var cd = 20; xxx(cd); window.alert(cd); function yyy(arr) { arr[0] = 20; } var myarr = [30,40,50]; yyy(myarr); window.alert(myarr); </script> </head> <body> </body> </html>
这段代码中有两个方法,第一个是函数参数是一个数值的,来看一下,程序运行到 cd = 20; xxx(cd);时开辟一个栈,这时需要调用函数了,然后新开辟一个栈,在这个栈中有传递过去的值,则ab = 20;然后进入函数体中,ab = 10,然后又转回来,window.alert()输出的还是cd,所以取出来cd的值,为20;

而在第二个方法中,函数的参数是一个数组,执行到var myarr = [30, 40, 50]; yyy[myarr];时,在栈中定义了变量myarr,它指向一个数组,所以还要开辟一个栈,这个栈中存放开辟的myarr数组,然后返回刚才那个栈,接下来执行方法,所以需要另开辟一个栈,在这个栈中存放方法中定义的变量,arr因为它也是一个数组,使用myarr传过来的地址,这时arr和myarr都指向同一个数组,即为myarr数组开辟的栈,这时方法体中arr[0] = 20;这时arr指向的myarr数组就发生了变化,第一个数变为20.

下面是运行结果:


转载于:https://www.cnblogs.com/JPAORM/archive/2012/05/19/2510249.html

javascript函数参数的传递问题相关推荐

  1. JavaScript 函数参数

    JavaScript 函数参数 JavaScript 函数对参数的值没有进行任何的检查. 函数显式参数(Parameters)与隐式参数(Arguments) functionName(paramet ...

  2. C++ 函数参数 值传递与引用传递

    以前我们在C语言中函数参数传递过程中,如果我们想要让当A函数作用域中的变量经过B函数处理之后的数值仍然在A函数中生效,这个时候函数参数的传递时需要引用方式去传递,方式如下: #include < ...

  3. 怎样在javascript函数中将变量传递给服务端脚本程序?

    怎样在javascript函数中将变量传递给服务端脚本程序? (有朋友问上述问题, 愿把结论分享给大家). 摘 要:   服务器端脚本运行时, 它只会解释执行<% %>或<?php ...

  4. 数组作为函数参数进行传递

    今天编程序时发生了个这样的错误: 在头文件里 定义了一个数组: View Code 1 char s[]="1234567890"; 又定义了一个现显示组的函数: View Cod ...

  5. 彻底搞定C指针-——第五篇:函数参数的传递

    一. 三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?) 1. 考题一:程序代码如下: void Exchg1(int x, int y)   {   in ...

  6. 函数参数的传递问题(一级指针和二级指针)

    函数参数的传递问题(一级指针和二级指针) [转] 原以为自己对指针掌握了,却还是对这个问题不太明白.请教!   程序1:   void  myMalloc(char  *s)  //我想在函数中分配内 ...

  7. python 函数参数的传递(参数带星号的说明) 元组传递 字典传递

    python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...

  8. JavaScript 函数参数是传值(byVal)还是传址(byRef)?

    对于"JavaScript 函数参数是传值(byVal)还是传址(byRef)"这个问题,普遍存在一个误区:number,string等"简单类型"是传值,Nu ...

  9. 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递

    5.1.3  函数参数的传递 我们知道,函数是用来完成某个功能的相对独立的一段代码.函数在完成这个功能的时候,往往需要外部数据的支持,这时就需要在调用这个函数时向它传递所需要的数据它才能完成这个功能获 ...

最新文章

  1. Java类加载器详解
  2. Filebeat的下载(图文讲解)
  3. 20155220吴思其 实验2 Windows口令破解
  4. librosa能量_librosa与python_speech_features
  5. 在VisualStadio2015上使用EF6.0建立MySql数据库
  6. Redis企业级数据备份与恢复方案
  7. Vue如何mock数据模拟Ajax请求
  8. sql语句中单引号嵌套问题
  9. Git利用命令行提交代码步骤
  10. Android Jetpack Startup库分析
  11. java判断子串重复_判断字符串是否是由子串重复多次构成
  12. Servlet技术(第三章)
  13. c语言泊松分酒编码,泊松分酒原理
  14. 那些让我印象深刻的bug--04
  15. 禁用计算机安全模式,安全模式
  16. 联通彻底被iPhone抛弃,失去绯闻女友
  17. VRCHAT模型上传常见问题汇总
  18. latex 矩阵分块(block matrix)
  19. x265代码阅读:码率控制(一)
  20. 发现一个不错的导航网站:site114网站导航

热门文章

  1. PHP下获取上个月、下个月、本月的日期(strtotime,date)
  2. git push报错 ! [remote rejected] master -> master (push declined due to email privacy restrictions)
  3. Java连接并操作SQLServer数据库
  4. [转]ubuntu使用meld/beyond compare 做git的diff工具
  5. 从可视化模板,到数据仓库、数字化的资料,我整理并分享出来
  6. 这个工具,可视化分析10W数据后,找到了数据岗位月薪20K的秘诀
  7. 制药企业BI系统方案整体设计分享
  8. idea重写接口没有@override_细说 Java Overload 与 Override 差别
  9. php筛选怎么做,thinkphp条件筛选 例子
  10. github上下载别人的vue项目,本地运行