详解JavaScript的变量
基本类型和引用类型的值
ECMAScript变量一般有两种数据类型的值基本类型和引用类型。
- 基本类型 简单的数据段Undefined, Null, Boolean, Number, String
- 引用类型多个值构成的对象;
1.动态的属性
定义两者的值创建一个变量并为其变量赋值;
执行两者的值
- 引用类型可以添加、删除属性和方法;
- 基本类型不能添加、删除属性和方法;
比如引用类型 a,可以添加属性 name age
var a = new Object(); a.name = "我喂前端袋盐"; a.age = 24; console.log(a.name); //我喂前端袋盐
基本类型 name 无法添加属性 age
var name = "我喂前端袋盐"; name.age = 24; console.log(name.age); //undefined
代码中可知只能给引用类型值动态地添加属性,以便将来使用。
2. 赋值变量值
从一个变量向另一个变量复制基本类型值和引用类型值时
基本类型在变量对象上创建一个新值,并将其值复制给新变量分配的位置上;(完全独立的两个变量)
例如
var a = 111; var b = a; console.log(b); //111
代码中可知变量b的值只是变量a的值的一个副本,两者的值111是完全独立的。
引用类型将存储在变量对象中的值复制一份放到为新变量分配的空间中;(引用同一个对象的两个变量)
引用类型的值的副本实际是一个指针,指向存储在堆中的一个对象。
var obj1 = new Object; var obj2 = obj1; obj1.name = "我喂前端袋盐"; console.log(obj2,name); // Object { name="我喂前端袋盐"} 我喂前端袋盐
代码中可知obj1和obj2都指向同一个对象Object;所以,为obj1添加的name属性,通过obj2也可以访问的到。
3. 传递参数
我们都知道基本类型是按值访问的,因为可以访问保存在变量中的实际的值。
所有函数的参数都是按值传递的。
基本类型基本类型值的传递如同基本类型变量的复制一样;
在向参数传递值,被传递的值会被复制给一个局部变量(命名参数),这个局部变量的变化不会反映在函数的外部。
例如
function fn(num) { num += 10; return num; } var a = 10; var result = fn(a); console.log(result); //20 console.log(a); //10
代码中可知参数num和变量a互不相识,只是有着相同的值而已,用完之后,你还是你,我还是我,互不干政。
引用类型引用类型的传递如同引用类型变量的复制一样;
在向参数传递值时,会把这个值在内存中的地址复制给一个局部变量,这个局部变量的变化会反映在函数的外部。
例如
function fn(obj) { obj.name = '我喂前端袋盐'; } var person = new Object(); fn(person); console.log(person.name); //我喂前端袋盐
代码中可知在这个函数内部,参数obj和变量person引用的是同一个对象Object,所以,你不动我也不动,你动我也动,你中有我,我中有你,情义绵绵,经久不息……
也就是说即使变量person是按值传递的,参数obj(想象成局部变量)还是会按引用来访问同一个对象。
访问变量有按值和按引用两种方式,参数只能按值传递。
4. 检测类型
基本类型typeof
引用类型instanceof(对象或null)
例如
var a = 'Wo Wei Qian Duan Dai Yan'; var b = 24; var c = ''; var d = true; var e; var g = undefined; var f = null; // 比较特殊 var h = new Object(); console.log(typeof a); //string console.log(typeof b); //number console.log(typeof c); //string console.log(typeof d); //boolean console.log(typeof e); //undefined console.log(typeof g); //undefined console.log(typeof f); //object console.log(typeof h); //object
所用引用类型的值都是Object的实例。
如下
var person = new Object(); var num = [1,2, 3]; var pattern = /.at/i; console.log(person instanceof Object); //true console.log(num instanceof Object); //true console.log(num instanceof Array); //true console.log(pattern instanceof Object); //true console.log(pattern instanceof RegExp); //true
以上所述是长沙网络推广给大家介绍的JavaScript变量详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程