js的基本数据类型和复杂数据类型区别

1.区别
基本数据类型把数据名和值直接存储在栈当中
复杂数据类型在栈中存储数据名和一个堆的地址,在堆中存储属性及值,访问时先从栈中获取地址,再到堆中拿出相应的值
2 不同数据类型作为参数时 函数内部对参数的修改是否改变外部变量的值

基本数据类型作为参数时,函数内部对参数值的修改不会改变外部变量的值

function a(s){//定义以s为参数的函数,返回s的值
    s=100;
    return s;
    }
    var y=2;
    a(y);//y作为参数调用函数a
    console.log(y);//y还是为2

结果还是1因为把y的值给s时是简单的复制了一份,y和s可以单独操作不相互影响

复杂数据类型作为参数时,函数内部对参数值的修改会改变外部变量的值

因为复杂数据类型赋值是把栈中对象的地址赋给变量,函数内外两个变量指向同一个对象,所以只要对象的属性值改变,两个变量值都会改变

function student(age,name,grade){
    this.age=age;
    this.name=name;
    this.score=grade;
}

var s1=new student(18,"wjq",2);//创建一个student对象

function a(s){

     s.name="xxx";

}
a(s1)//把s1赋给s
console.log(s1.name);//输出xxx

所以要弄懂js中简单数据类型和复杂数据类型的区别,关键还要搞懂两个在内存中的存储过程。

原文地址:https://www.cnblogs.com/alenhx/p/9048144.html

时间: 2024-10-09 14:06:38

js的基本数据类型和复杂数据类型区别的相关文章

js中基本数据类型和引用数据类型的区别

1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值. 2.常见的基本数据类型: Number.String .Boolean.Null和Undefined.基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值.示例: var a = 10; var b = a; b = 20;

php和java数据类型和表达式的区别

前段时间学习了下php觉得挺简单的,不过这只是相对java而言,php简单了但是还是很有很多细节问题需要注意,为了顺便巩固下java基础知识,我把java和php做了对比.这次比较的是数据类型和运算符. 一.数据类型 先来看看php的数据类型划分: 基本数据类型:整数类型,小数类型[不分单精度和双精度],boolean类型,字符串 复合数据类型:数组.对象 特殊数据类型:NULL.资源类型 下面是java数据类型划分 基本数据类型:数值类型(整数类型[byte,short,int,long] 浮

JavaScript中基本数据类型和引用数据类型的区别

1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值. 2.常见的基本数据类型: Number.String .Boolean.Null和Undefined.基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值.示例: var a = 10; var b = a; b = 20;

js是这样判断值的数据类型的

js如何判定给定值的数据类型? typeof typeof "a" // "string" typeof 1 // "number" typeof true // "boolean" typeof {} // "object" typeof [] // "object" typeof null // "object" typeof function(){} // &q

前端学习(26)~js学习(四):基本数据类型vs引用数据类型

在上一篇文章中,我们介绍过,变量有以下数据类型: 基本数据类型(值类型):String 字符串.Number 数值.Boolean 布尔值.Null 空值.Undefined 未定义. 引用数据类型(引用类型):Object 对象. 本文,我们针对这两种类型,做进一步介绍.我们先来看个例子. 基本数据类型举例: var a = 23; var b = a; a++; console.log(a); // 打印结果:24 console.log(b); // 打印结果:23 上面的代码中:a 和

前端学习(25)~js学习(三):变量的数据类型

变量的数据类型 为什么需要数据类型 在计算机中,不同的数据所需占用的存储空间不同,为了充分利用存储空间,于是定义了不同的数据类型.而且,不同的数据类型,寓意也不同. JS 的变量数据类型,是在程序运行的过程中,根据等号右边的值来确定的.而且,变量的数据类型是可以变化的.比如说: var name = 'qianguyihao'; name = 123; // 强制将变量 name 修改为 数字类型 JS中一共有六种数据类型 基本数据类型(值类型):String 字符串.Number 数值.Boo

第二十一节,基本数据类型,之间的区别

基本数据类型,之间的区别 数字类型int => 整数 浮点数float => 浮点数(1.55) 字符串str => 字符串 字节类型bytes => 将字符串转换成进制代码,将进制代码转换成字符串,(如16进制,10进制,2进制) 布尔类型bool => 真,假 列表list => 有序,内容可重复,可迭代,可修改 元组tuple => 有序,内容可重复,可迭代,不可修改 字典dict => 无序(有键),内容可重复,可迭代,可修改 集合set =>

JAVA的基本数据类型和引用数据类型的区别

引用数据类型: 类.接口类型.数组类型.枚举类型.注解类型: 基本数据类型和引用数据类型的区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上: 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址. 例如,有一个类Person,有属性name,age,带有参的构造方法, Person p = new Person("Tom",20); 在内存中的具体创建过程是: 1.首先在栈内

检索01-c#中基本数据类型和引用类型的区别

1.基本定义 基本数据类型包括:整型.浮点型.字符型.结构体.布尔型.日期时间.枚举类型等 引用类型包括:字符串.类.数组.接口等 堆定义:是一种特殊的树形数据结构,每个结点都有一个值,一般由程序员分配释放,属于动态分配的,若程序员不释放,程序结束时可能由OS回收 栈定义:是在进行操作时遵循后进先出规则的线性结构,在类加载中由系统静态分配的,存放函数的参数值,局部变量的值等,方法调用结束之后,立即释放 2.基本数据类型与引用类型之间区别 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完