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]

  • 相关阅读:
    poj3669 广搜
    检索所有课程都选修的的学生的学号与姓名
    UVA10160 Servicing Stations
    uva11205 The broken pedometer 子集生成
    poj1101 the game 广搜
    poj3009 Curling 2.0 深搜
    poj 1564 Sum It Up 搜索
    HDU 2268 How To Use The Car (数学题)
    codeforces 467C George and Job(简单dp,看了题解抄一遍)
    HDU 2267 How Many People Can Survive(广搜,简单)
  • 原文地址:https://www.cnblogs.com/zzsdream/p/6238446.html
Copyright © 2011-2022 走看看