关于变量的理解和函数内参数的引用

首先理解变量包括两种不同数据类型的值:1.基本类型值 2.引用类型值

基本类型值为简单的数据段,如var name="tom";

name.age=20;

alert(name.age); //undefined  不能给基本类型的值无法添加属性。

引用类型值为可能由多个值构建的对象,如var person=new Object();

person.age=20;

alert(person.age); //20  可以给基本类型的值添加属性。

函数内参数的传递:1.基本类型的值传递:function addTen(num){

num+=10;

return num;

};

var count = 20;

var result= addTen(count);

alert(count);  //20 无变化

alert(result);  //30

2.当传入参数的变量时按引用访问的时候: function  setName(obj){
                                                                                   obj.name=‘jerry‘;
                                                                                     }
                                                                                   var person=new Object();
                                                                                    setName(person);
                                                                                    alert(person.name);  //‘jerry‘

此处的obj和person访问的是同一个对象(new Object());即使这个变量是按值传递的,obj也会按引用来访问同一个对象。当为函数内部的obj添加属性时,外部的person也会做出改变。

3.  function  setName(obj){
                                  obj.name=‘jerry‘;
                                  obj= new Object();
                                  obj.name=‘tom‘;
                                     }
                                  var person=new Object();
                                  setName(person);
                                  alert(person.name);  //‘jerry‘

此处的obj= new Object();为obj重新定义了一个新的对象。所以obj.name=‘jerry‘和person指向同一个对象。而obj= new Object();obj.name=‘tom‘;是一个新对象的引用了,在函数执行完毕后会被销毁。

时间: 2024-10-14 07:23:23

关于变量的理解和函数内参数的引用的相关文章

PHP自定义函数之参数的引用

在变量这个函数中,我们学习了变量的引用,我们来回顾一下知识: <?php $a = 10; $b = &$a; $a = 100; echo $a.'---------'.$b; ?> 变量的引用就是把变量$a.$b的值存到同一个空间里. 而函数的参数引用,也是这个意思,将形参和实参指向到同一个位置.如果形参在函数体内发生变化,那么实参的值也发生变化.我们来通过实验来看看: $fun2=101; $fun3=&$fun2; $fun2=100; echo $fun3.$fun2

*args 和**kwargs 的理解以及 函数的参数的总结

一:函数参数的理解: 1 def 函数名(函数参数): 2 函数体 3 4 例如: 5 def func(a): # a 是形参 6 print(a) 7 8 func(123) # 123 是实参 9 10 形参又分为: 关键字参数,位置参数,混合参数 11 关键字参数 12 def func(x,y,z="默认参数"): 13 print(x,y,z) 14 15 func(1,y="xumou") # 1 xumou 默认参数 16 ''' 17 代表 位置参

Bullet:Python的函数中参数是引用吗?

别的语言中关于函数有传值和传引用的区分. 关于此,流传很广的一个说法是 他们在现象的区别之一就是值传递后的变化,受到影响的就是引用,未受到影响的就是传值. 在学习中,也曾碰到过这个问题,网上关于这个也是有着一些争论,各执一词. 但是官方文档中,却明确写着是call by object reference. https://docs.python.org/2/tutorial/controlflow.html#id2 The actual parameters (arguments) to a f

Python——变量的引用和函数的参数和返回值的传递方式

变量的引用 在python中,所有的变量都是指向地址,变量本身不保存数据,而是保存数据在内存中的地址.我们用下面的程序来理解: 1 a = 10 2 print(id(a)) 3 a = 11 4 print(id(a)) (利用id( )方法查看数据的地址) 输出结果为: 可以发现:修改变量的值,变量保存的地址随之改变. python中: 变量和数据是分开存储的 变量 中保存着数据在内存中的地址 我们把变量中记录数据的地址的行为,叫做 引用. 通俗的来说,在 Python 中,变量的名字类似于

深入理解变量声明提升和函数声明提升

变量声明提升 1.变量定义 可以使用var定义变量,变量如果没有赋值,那变量的初始值为undefined. 2.变量作用域 变量作用域指变量起作用的范围.变量分为全局变量和局部变量.全局变量在全局都拥有定义:而局部变量只能在函数内有效. 在函数体内,同名的局部变量或者参数的优先级会高于全局变量.也就是说,如果函数内存在和全局变量同名的局部变量或者参数,那么全局变量将会被局部变量覆盖. 所有不使用var定义的变量都视为全局变量 3.函数作用域和声明提前 JavaScript的函数作用是指在函数内声

如何理解javaSript中函数的参数是按值传递

本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人理解,有不正确的地方,希望大家指出,谢谢啦!) 参考的资料有: https://github.com/simongong/js-stackoverflow-highest-votes/blob/master/questions21-30/parameter-passed-by-value-or-referen

递归中对于参数和变量的理解

 对于递归函数:参数,局部变量的生存期和调用时间问题 ================================================================================================== #include <stdio.h> int binary_to_ascii( unsigned int value) { unsigned int quotient; quotient = value / 10;              

指向结构体变量的指针作函数参数

 /********************* * 指向结构体变量的指针作函数参数 * ***********************/ #include<stdio.h> #include<string.h> struct student {  int num;  char name[20];  //char *name;    //若定义为指针则应与下面 stu.name = "jacob"; 配对使用,交叉使用则会报错                 //

理解JavaScript函数参数

前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查.实际上,javascript函数调用甚至不检查传入形参的个数 ? 1 2 3 4 5 6 7 function add(x){ return x+1; } console.log(add(1));//2 console