JavaScript变量,作用域与内存问题(笔记)
来源:互联网 发布:淘宝信誉如何提升 编辑:程序博客网 时间:2024/06/03 22:44
众所周知,JavaScript有五种简单数据类型:Undefiend , Null , Boolean , Number 和String。还有一种复杂数据类型—Object。尤值一提的是JavaScript中Boolean值,true不一定等于1,而false也不一定等于0;
在JavaScript程序设计中,我们经常会碰到以下几种定义值,变量的情况。
如果没有参数,括号亦可省略,如:
2.基本类型值
当复制的变量类型是基本数据类型时,会在栈中创建一个新值,然后把该值复制到新变量分配的位置上。如:
JavaScript传递参数,与值的复制大同小异
向参数传递基本数据类型的值时,被传递的值会复制给一个局部变量(即函数的参数).如
但是,当参数传递为引用类型的值时,就不可同样对待了.因为程序会把当前值的指针作为参数,传递给函数内部的参数。此时,内外部参数的指针都指向堆中的同一个值(效仿值的复制)。如
以下一段程式更可直观的反应出引用类型值的指针传递
作用域问题:暂略;
内存问题:暂略;
在JavaScript程序设计中,我们经常会碰到以下几种定义值,变量的情况。
1.引用类型值
var person = new Object();person.name = "JKCaptain";alert(person.name); // JkCaptain
如果没有参数,括号亦可省略,如:
var person = new Object;
2.基本类型值
var name = "jkcaptain";name.age ="27";alert(name.age); //Undefiend
所以我们不能给基本类型值添加属性,尽管这样做不会导致报错。
当复制的变量类型是基本数据类型时,会在栈中创建一个新值,然后把该值复制到新变量分配的位置上。如:
var num1 = 5;var num2 = num1; //5
当一个变量从另一个变量复制引用类型的值时,同样的会将栈中的值复制一份到新的变量空间中。从本质上来讲,复制过去的不是值,是指针。而这个指针指向堆里的一个对象
所以复制操作结束后,两个指针指向同一个变量。故而只要其中一个变量变化,就都会受到影响。如:
var obj1 = new Object;var obj2 = obj1;obj1.name = "JkCaptain";alert (obj2.name); //JkCaptain;
JavaScript传递参数,与值的复制大同小异
向参数传递基本数据类型的值时,被传递的值会复制给一个局部变量(即函数的参数).如
function addNumber(num){ num += 10; return num;}var count = 20;var result = addNumber(count);alert(count); //20alert(result); //30
但是,当参数传递为引用类型的值时,就不可同样对待了.因为程序会把当前值的指针作为参数,传递给函数内部的参数。此时,内外部参数的指针都指向堆中的同一个值(效仿值的复制)。如
function setName(obj){ obj.name = "JkCaptain";}var person = new Object();setName(person);alert(person.name); //JkCaptain;
以下一段程式更可直观的反应出引用类型值的指针传递
function setName(obj){ obj.name = "JkCaptain"; var obj = new Object();//new一个新变量,指针与上述obj的指针不同。实际上,在函数中重写obj时,这个变量引用的就是一个局部变量了,函数执行完后会被立即销毁 obj.name = "jieke";}var obj = new Object();setName(obj);alert(obj.name); //JkCaptain 由此可见函数中内部声明的obj与此obj不是引用同一个堆中的变量
作用域问题:暂略;
内存问题:暂略;
- JavaScript变量,作用域与内存问题(笔记)
- javascript 基础笔记 变量、作用域、内存问题
- JavaScript笔记:变量、作用域和内存问题
- JavaScript高级程序设计笔记-变量、作用域和内存问题
- JavaScript变量,作用域,内存问题(笔记)
- JavaScript中变量、作用域、内存问题
- JavaScript变量、作用域及内存问题
- 【JavaScript】变量、作用域和内存问题
- JavaScript 变量、作用域和内存问题
- JavaScript-变量、作用域和内存问题
- javaScript 变量 作用域和 内存问题
- Javascript变量、作用域和内存问题
- JavaScript变量、作用域和内存问题
- JavaScript变量 ,作用域,内存问题
- 变量、作用域与内存问题
- Javascript高级程序设计第二版第四章--变量,作用域及内存问题--笔记
- Javascript学习笔记04 ——变量,作用域,内存问题
- JavaScript高级程序设计学习笔记——变量、作用域和内存问题(重要)
- Android开发学习之IO文件读写操作
- C 最大整数
- invoke Coroutine
- 一个python程序员的ruby三日游(四)——观察者模式
- 第几是谁(NYOJ)
- JavaScript变量,作用域与内存问题(笔记)
- 一个 定时向网络访问数据 的程序--地震速报
- 应付(AP)
- toupper
- 使用CTime判断日期有效性(C++)
- cocos2d-x 中文 乱码问题
- ebs 组织
- STM32(Cortex-M3)中的中断优先级概念
- DMA