JavaScript学习笔记五:变量、作用域和内存问题

1.ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型的,ECMAScript放弃了这一传统。

2.从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,两个变量值操作不会相互影响。

3.从一个变量向另一个变量复制引用类型的值时,存储在变量对象中的值复制一份放到为新变量分配的空间中,不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象,复制后,两个变量指向同一个对象,操作会相互影响。

4.ECMAScript中所有函数都是按值传递的。

5.instanceof常用于检测对象的类型。所有引用类型的值都是Object的实例。

6.在Web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。全局执行环境直到应用程序退出--关闭网页或浏览器时才会被销毁。每个函数都有自己的执行环境。环境之间的联系是线性有次序的,只能向上搜索外部环境中的变量和函数,不能向下搜索内部环境中的变量和函数。

7.使用var声明的变量会自动被添加到最接近的环境中,如果初始化变量时没有使用var声明,则该变量会自动被添加到全局环境。

8.一旦数据不再有用,最好通过将其值设置为null来释放其引用,以释放内存空间。

9.基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中,引用类型的值是大小不固定的对象,保存在堆内存中。

时间: 2024-12-09 10:07:40

JavaScript学习笔记五:变量、作用域和内存问题的相关文章

JavaScript学习笔记——js变量的布尔值

typeof(1): numbertypeof(NaN): numbertypeof(Number.MIN_VALUE): numbertypeof(Infinity): numbertypeof("123"): stringtypeof(true): booleantypeof(window): objecttypeof(Array()): objecttypeof(function(){}): functiontypeof(document): objecttypeof(null)

php学习笔记0001 变量作用域

<?php/*2015-8-6php学习笔记0001函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问.函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问. */$x = 5;function ast(){ /* 声明局部变量 输出结果为6 */ $x = 6; echo $x;}function beli(){ /* 没有声明局部变更 函数内部无法访问全局变量 编译正常 调用报错 */ echo $x;}ast();//输出6//beli();//会报错ech

JavaScript学习笔记—— 4. 变量、作用域和内存问题

ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值,其中基本类型值是简单的数据段,而引用类型值指的是那些可能由多个值构成的对象: 对于5种基本类型数据:undefined, null,boolean,number和string,采用按值访问,因为可以操作保存在变量中的实际的值: 对于引用类型的值而言,JavaScript并不能直接访问内存中的位置,也就是说不能直接操作对象的内存空间,在操作对象时,实际上是在操作对象的引用而非实际的对象. 在从一个变量向另一个变量复制基本

前端乱煮之javascript学习笔记五

1 window对象: 所有浏览器都支持window对象,它表示浏览器窗口.所有javascript的全局对象.全局函数以及变量都自动成为window对象的成员.全局变量是window对象的属性,全局函数是window对象的方法. 确定浏览器可视窗口的尺寸大小(除去工具栏和滚动条)的三种方法: (1)window.innerHeight 得到浏览器的可视高度,window.innerWidth得到浏览器的可视宽度.(Internet Explorer.Chrome.Firefox.Opera 以

javascript学习笔记(五)

第一步,实现demo样式 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>鼠标移入/移出改变样式</title> <style> body{color:#fff;font:12px/1.5 Tahoma;} #div1 {width:150px;height:150

第一百零六节,JavaScript变量作用域及内存

JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 一.变量及作用域 1.基本类型和引用类型的值 ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是那些保存在栈

javascript变量作用域与内存

第四章 变量作用域与内存基本类型 5种Undefined Null Boolean Number String 两种变量类型 基本类型与引用类型注意:String 再其他语言中是引用类型,再javascri中为基本类型即:这五种基本类型是按值访问的 引用类型是按照引用访问的 动态的属性对于一个引用类型,一个引用变量被赋值后,可以为其添加属性,也可以删除与修改其属性var o = new object();o.name = "qi"; //可以为引用变量添加属性 变量的复制基本类型的复制

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(变量)

变量声明关键字var: var i = 1: var t = "asd"; var test1 = "hi", test2 = "hello"; 声明变量不一定要初始化, var i;//ok 另一方面在使用变量前若未加关键字var,则此变量为全局变量(此特性需特别记住). 变量名字: 变量名需要遵守两条简单的规则: 第一个字符必须是字母.下划线(_)或美元符号($) 余下的字符可以是下划线.美元符号或任何字母或数字字符 命名变量规则: Came