对保存变量及传递变量的思考

//基本类型和引用类型的值
//ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.
//基本类型值是指简单的数据段,而引用类型值指那些可能由多个值构成的对象.
//1.基本类型变量的传递
var name = "陈国栋"
name.age = 25;
console.log(name.age); //undefind 此处不会报错,返回值为undefind
//2.引用类型变量的传递
var person = new Object();
person.name = "陈国栋";
console.log(person.name); //陈国栋 引用类型我们可以为其添加属性和方法,基本类型则不行
//3.基本类型变量的传递
var num1 = 5;
var num2 = num1;
console.log(num1); // 5
console.log(num2); // 5
num1 = 10;
console.log(num1); // 10
console.log(num2); // 5
num2 = 15;
console.log(num1); // 10
console.log(num2); // 15 以上可以看出,基本类型变量在专递过后是相互独立的,不管其中一个变量如何修改,另外一个变量都不会发生改变.
//4.引用类型变量的传递
/*当从一个变量向另外一个变量赋值应用类型的值时,也会将储存在变量对象中的值赋值一份放到位新变量分配的空间中.不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象.复制操作结束后,两个变量实际上将引用同一个对象.因此,改变其中一个变量,就会影响另外一个变量*/
var person2 = person;
console.log(person.name); //陈国栋
person2.name = "张飞";
console.log(person.name);  //张飞
console.log(person2.name);  //张飞

根据上面理论在实际运用中的思考

 function getPageInfo(){
     var page={};
     page.pageWidth = window.innerWidth;
     page.pageHeight = window.innerHeight;
     if(typeof page.pageWidth != "number"){
        if(document.compatMode == "CSS1Compat"){
          //验证当前页面是否在标准模式下
          page.pageWidth = document.documentElement.clientWidth;
          page.pageHeight = document.documentElement.clientHeight;
        }else{
          page.pageWidth = document.body.clientWidth;
          page.pageWidth = document.body.clientHeight;
        }
     }
     return page;
   }
mypage = getPageInfo();
   console.log(mypage.pageWidth+","+mypage.pageHeight);//1289.1189
   window.innerWidth = 100;
   console.log(mypage.pageWidth) //1289
   console.log(window.innerWidth) //100

上面为获取窗口可视尺寸的函数.

其中将window.innerHeight的值赋值给page.pageHeight,即相当于我们例子中num2赋值给num1一样,是基本类型变量的传递.

所以我们在修改window.innerWidth的值时,mypage.pageWidth的值不会发生改变.

时间: 2024-11-06 01:26:56

对保存变量及传递变量的思考的相关文章

在两个ASP.NET页面之间传递变量【转】

ASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面间传递变量,同样的事情,在使用事件驱动编程模型的ASP.NET就要麻烦一些,但是我们仍然有一些方法可以实现同样的功能.笔者在这里将包含使用querystring,session变量以及server.Transfer方法来实现页面间的变量传递. 使用QueryString 使用QuerySting在页面间传递值已经是一种很老的

Jmeter跨线程组传递变量

跨线程组传递变量只能通过属性来传递,并且属性只能传字符串变量. 如果想传数组变量,需要先将数组转化为字符串,在下一个线程组再转化为数组. [注意]在使用时要注意线程组的执行顺序.需要勾选测试计划里的独立运行每个线程组按钮. 一.beanshell自带方法 props.put("变量名","值") 全局变量赋值 props.get("变量名") 获取全局变量 这里简单介绍一个例子,从线程组1里传递给线程组2 字符串:hao123. 1)使用正则提取

Linux/Unix shell sql 之间传递变量

灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本 一.示例 [python] view plain copy print? 1.shell变量接受sql返回值之方式一 [email protected]:~> more ./retval

drupal7 使用(hook_preprocess_HOOK)向各个主题模版里面传递变量

函数地址:hook_preprocess_HOOK 1 首先解释下hook_preprocess_HOOK这个钩子的含义: hook           _     preprocess  _   HOOK [module]     _     preprocess  _   [theme hook name] 自定义的模块名字           预处理                            通过hook_theme 声明的主题 2 使用 <?php //设置变量 functi

C++学习 c++中常量定义以及值传递和传递变量别名。

1.C++提供了const来定义常量const float PI=3.14159.代替C中#define PI 3.14159 2. #include<iostream>using namespace std;void wap(int a, int b){ int temp; temp = a; a = b; b = temp;} int main(){ int i, j; cin >> i >> j; wap(i, j); cout << i <&l

无法把指针变量本身传递给一个函数

例1: #include<stdio.h> #include<stdlib.h> void fun(char*p) { char c = p[3];//或者是char c=*(p+3); } int main() { char*p2 = "abcdefg"; fun(p2); system("pause"); return 0; } 错误,因为无法把指针变量本身传递给一个函数 应该对实参做一份拷贝并传递给被调用函数,即对p2做一份拷贝,假设其

delphi传递变量给fastreport

delphi传递变量给fastreport 1.打开frReport报表设计.2.打开file->data dictionary加变量.这里比如加title,bm,zbr,gj,zrs3.在报表控件主放一个richtext或一个rectangle数据控件,选择刚才添加的变量.4.选择中frReport的GET Value方法,如下表:procedure Tgjdb.frReport1GetValue(const ParName: String;  var ParValue: Variant);b

254 在js调用函数时,传递变量参数时, 是值传递还是引用传递

问题: 在js调用函数时,传递变量参数时, 是值传递还是引用传递 理解1: 都是值(基本/地址值)传递 理解2: 可能是值传递, 也可能是引用传递(地址值) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>02_关于数据传递问题</title> </head> <body> <

[Shell]Bash变量:自定义变量

/*------------------------------------------------------------------------------------------- @黑眼诗人 <www.farwish.com> --------------------------------------------------------------------------------------------*/ 变量是计算机内存的单元,其中存放的值可以改变.变量用于暂时保存信息. 一