js中的基本类型和引用类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了js中的基本类型和引用类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2025字,纯文字阅读大概需要3分钟。
内容图文
转自https://www.cnblogs.com/gromimiss/p/6066268.html
基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。
基本数据类型有这五种:Undefined、Null、String、Number、Boolean。
引用类型:当复制保存着对象的某个变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。引用类型值指那些可能为多个值构成的对象。
引用类型有这几种:object、Array、RegExp、Date、Function、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。
对于基本类型值和引用类型值的区别:
① 引用类型值可添加属性和方法,而基本类型值则不可以。
//为引用类型值添加属性 var p = new Object(); p.age=11; alert(p.age);//11 //为基本类型值添加属性 var name = ‘a‘; name.age = 11; alert(name.age); //undefined
② 在复制变量值时,基本类型会在变量对象上创建一个新值,再复制给新变量。此后,两个变量的任何操作都不会影响到对方;而引用类型是将存储在变量对象的值复制一份给新变量,但是两个变量的值都指向存储在堆中的一个对象,也就是说,其实他们引用了同一个对象,改变其中一个变量就会影响到另一个变量。
//基本类型值 var a = ‘a‘; var b = a; a = ‘b‘; alert(b); //a
引用类型值,以数组为例:
//引用类型值,以数组为例 //1.对其中一个变量直接赋值不会影响到另一个变量(并未操作引用的对象) var a = [1,2,3]; var b = a; a = [1,2,3,4]; alert(a);//1,2,3,4 alert(b); //1,2,3 //2.使用push(操作了引用的对象) var a = [1,2,3]; var b = a; a.push(4); alert(a);//1,2,3,4 alert(b); //1,2,3,4
传递参数:按值传递,将函数外部的值复制给函数内部的参数(一个局部变量),当对局部变量进行操作时,局部变量的变化会反应在函数外部,但是这并不会影响函数外部的值。
function add(a){ a += 10; return a; } var num = 10; var result = add(num); alert(num); //10 alert(result); //20
当然,使用对象时可能会不好理解:
function setName(obj){ obj.name = ‘a‘; } var p = new Object(); setName(p); alert(p.name); //a
明明参数是按值传递的,为什么创建的p实例也能获取到在setName()中添加的name属性呢?
因为obj和p引用的是同一个对象,即便按值传递,obj也会按引用来访问同一个对象。看一下下面的例子就能清楚了。
function setName(obj){ obj.name = ‘a‘; obj = new Object(); obj.name = ‘a‘; return obj; } var p = new Object(); var p2 = setName(p); alert(p.name); // a alert(p2.name); // b
在函数内部重写obj对象,此时obj对象引用的是一个局部对象,外部的p还是原始的引用,因此不会改变。
检测类型:
typeof:确定变量是字符串、数值、布尔值还是undefined的最佳工具。
var num = 1; var a = ‘a‘; var b; var flag = true; var o = null; alert(typeof num); //number alert(typeof a); //string alert(typeof b); //undefined alert(typeof flag); //boolean alert(typeof o); //object
instanceof :判断是否是某个对象类型。
var a = [1,2,3]; alert(a instanceof Object); //true alert(a instanceof Array); //true alert(a instanceof RegExp); //false
原文:https://www.cnblogs.com/Marinnn/p/9129765.html
内容总结
以上是互联网集市为您收集整理的js中的基本类型和引用类型全部内容,希望文章能够帮你解决js中的基本类型和引用类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。