1、基本数据类型传递参数:

  funciton addTen(num){ 
    num =10; 
    return num; 
  } 
  var count=20; 
  var result=addTen(count); 
  alert(count);//20 
  alert(resullt);//30

  执行结果是:20和30。在这段代码中,将变量count当做参数传递给了函数addTen,也就是相当于将变量count的值复制给了函数addTen的参数。这时addTen的参数num可以看做是函数内部的一个变量。在上段代码中,就相当于两个基本数据类型变量之间的值复制。而基本数据类型都有自己独立的内存地址,所以num和count是没有任何关系的,他们只是值相等而已,函数执行完毕后,count的值并没有改变。而函数外面的result是被直接赋值的,所以result的值就是函数的结果30。
  2、引用类型传递参数:
  function setName(obj){ 
    obj.name="LSN"; 
  } 
  var person=new Object(); 
  setName(person); 
  alert(person.name);//LSN

  执行结果是:LSN。在这段代码中,函数setName的作用是给obj对象添加了一个属性name并给该属性赋值为"LSN",因为obj是引用类型,所以这里属于是将引用类型person赋值给了obj,也就是说person和obj引用了一个内存地址,所以当给obj新加了属性name时,在函数外面的person也跟着改变,最后person.naem的结果为LSN。
  3、引用类型传递参数到底传的是值还是引用?
  function setName(obj){ 
    obj.name="ABC"; 
    obj=new Object(); 
    obj.name="BCD"; 
  } 
  var person=new Object(); 
  setName(person); 
  alert(person.name);// ABC

  执行结果是:ABC。实例3与实例2的区别是在函数中又加了2行代码,在给obj对象新加一个属性name并赋值后 又将obj定义成了一个新的对象(new Object()),定义新对象后又name赋上新的值“BCD”。这个时候如果是按引用传递的话,那么最后person对象就会自动修改为指向其name属性为"BCD"的新对象,但最后显示的却是“ABC”,这说明即使在函数内部修改了参数的值,但原始的引用还保持不变。实际上,当在函数内部obj=new Object()时 这个新的obj就已经成为函数内部的局部对象了,这个对象会在函数执行完毕后自动销毁。

Js从头学起(基本数据类型和引用类型的参数传递详细分析)的更多相关文章

  1. Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型

    其使用求余运算符计算最后一位数字并利用digitNames字典获取所映射的字符串.2.字典digitNames下标后跟着一个叹号(!

  2. swift 值类型和引用类型

    1.Struct是值类型,拷贝是值拷贝,Class是引用类型,拷贝是引用拷贝

  3. Swift:什么时候使用结构体和类

    发布于2015年8月14日世界上对swift持续不断的讨论话题中有一个就是什么时候使用结构体什么时候使用类。这个例子对应下面Swift的举例:和之前的打印结果一样:值类型的体验值类型不是一个新的概念,但是对于很多人来说他们觉得这是新的。很多认为“一切皆对象”的语言如Python、JavaScript等也都只有引用类型。Swift对此说“yes”,那也就意味着Array,Dictionary和String都是结构体而不是类。

  4. 何时使用Swift Structs和Classes

    struct在绝大部分Objective-C代码中并不是很常用.我们偶尔以CGRect和CGPoint等方式接触到它们,但很少会自己去写.首先,它们不是很实用.用Objective-C在struct中正确地存储对象的引用的确很难,尤其是使用ARC的时候.很多其他语言干脆没有类似struct的东东.许多语言如同Python和JavaScript一样”万物皆对象”,只有引用类型.如果你是从这类语言转型到Swift的,你可能对struct的概念就更陌生了.等一下!

  5. Swift学习笔记—— 类和结构体

  6. 关于Swift中的值类型(Value Types)与引用类型(Reference Type)

    Swift里面的类型分为两种:●值类型:每个实例都保留了一分独有的数据拷贝。如结构体、枚举和元组。值类型与引用类型的区别在于:值类型和引用类型最基本的区别在于复制之后的结果。引用类型示例代码如下:值类型较引用类型来说,会让你更容易在大量代码中理清状况。因此可能会造成严重的程序错误,这在调试过程中非常难以排除。

  7. Swift面向协议编程初探

    最近有时间,挑了几个今年WWDC中比较感兴趣的Session视频来学习,今天就抽时间整理一下关于Swift2.0中一个比较新的概念面向协议编程。苹果官方那么正式的称Swift是一门支持面向协议编程的语言,难道就是这么简单的内容?而在Swift语言中,协议被赋予了更多的功能和更广阔的使用空间,在Swift2.0中,更为协议增加了扩展功能,使其能够胜任绝大多数情况下数据类型的抽象,所以苹果开始声称Swift是一门支持面向协议编程的语言。

  8. 深入了解下Swift中的Value Type

    Swift中的集合就是这么做的,你也可以自己创建一个这样的类型。~~ByeBye等等你给我讲了这么多貌似没什么用啊错用出躲到你都遗忘了在我们Swift的世界中StringArrayDictionary都是ValueType,那么在他们装了一个AnyObject的是不是一个ValueTypeContainaReferenceType下面我们拿Array距离Array可以看做一个特殊的Dictionary表现形式其实是一样的。

  9. swift 2.0 值类型 和 引用类型

    //2.值类型&引用类型//-----结构体变量属于值类型。相当于copy//------类对象属于引用类型。相当于strongstructPoint{varx:Intvary:Int}varpoint_99=Pointprint//这里的直接赋值,相当于是把point_99拷贝一份,把拷贝的那份给point_100,所以当之后修改point_99的值时,是不会影响point_100的。varpoint_100=point_99point_99.x=100point_99.y=100printclassP

  10. Swift 值类型,引用类型,深拷贝,浅拷贝,Copy,MutableCopy

    viewmode=list我的stackoverflow前言:Swift相对应ObjectiveC来说,它不再需要绝大部分对象继承自NSObject,所以Swift的类型和ObjectiveC的变量类型也不一致。Struct是值类型可以看到,值类型拷贝后的内存是这个样子的再来看看引用类型总结值类型或者引用类型在赋值的时候都是copy,值类型拷贝累实际的内存,而饮用类型只是拷贝了指针,仍然指向最开始的内存区域什么是值类型or引用类型?Class的实例是引用类型Swift方法类型是引用类型其余的都是值类型,像

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部