JS基本数据类型和引用类型的参数传递详细分析

本文探讨了JavaScript中基本数据类型与引用类型参数传递的区别,并通过实例解释了这两种类型的数据如何在函数调用中被处理。同时介绍了使用typeof操作符和instanceof关键字来检测变量类型的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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就已经成为函数内部的局部对象了,这个对象会在函数执行完毕后自动销毁。


两种变量类型检测

 

1.   Typeof操作符是检测基本类型的最佳工具;

2.   如果变量值是nul或者对象,typeof 将返回“object”;

3.   Instanceof用于检测引用类型,可以检测到具体的,它是什么类型的实例;

4.   如果变量是给定引用类型的实例,instanceof操作符会返回true;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值