zoukankan      html  css  js  c++  java
  • JS 传值 传址

    在JS中,有两种不同的方式可以操作数据的值,这两种技术分别叫做 传值 和 传址

    传值:在赋值过程中,首先对值进行了一份拷贝,而后将这份拷贝存储到一个变量、对象属性或数组元素中。拷贝的值和原始的值是完全独立、互不影响的。当一份数据通过值传递给一个函数,实际上被传递的不是数据本身,而是数据的一份拷贝。因此,如果函数修改了这个值,影响到的只是数据的那份拷贝,而并不影响数据本身。

    传址:在赋值过程中,变量实际上存储的是数据的地址(对数据的引用),而不是原始数据或者是数据的拷贝。如果值通过一个地址发生了改变,这个改变也会通过原始地址表现出来。

    根据操作数据方式的不同,我们可以把数据类型分为两类:基础类型 和 引用类型

    基础类型主要有:数字(Number)、布尔类型(Boolean)、字符串(String);其操作方式为 传值。

    引用类型主要有:对象(Object) —— 数组(Array)、函数(Function);其操作方式为 传址。

    以数字为例:

    复制代码
    1 var n = 1;
    2 var m = n;
    3 function total(x,y){
    4     x = x + y;
    5 }
    6 total(n,m);
    7 if(n == 1){
    8     alert(1);
    9 }
    复制代码

    执行结果:输出1

    以函数为例:

    复制代码
    1 function a(){
    2     var x = {'n':1};
    3     var y = x;
    4     x.n = 2;
    5     console.log(y);
    6 };
    7 a();    
    复制代码

     执行结果:{'n':2}

    以数组为例:

    复制代码
    1  function b(){
    2      var x = [1,2];
    3      var y = x;
    4      y[2] = 3;
    5      console.log(x);
    6  };
    7  b(); 
    复制代码

    执行结果:[1,2,3]

  • 相关阅读:
    JS之四舍五入有小数点
    c# table 怎么在前台循环展示 ViewBag
    c# ajax从后台获取数据list数组 $.each再显示数据
    c# 快捷键
    c#_导出table功能
    c# 缓存详解
    c# url链接转成二维码图片,再转成byte[]二进制流,输出到前段ajax
    JS ajax 返回的json对象 新增属性值(干货)
    tomcat配置HTTPS
    zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/zzsdream/p/6238446.html
Copyright © 2011-2022 走看看