微信网站价格,论坛类网站可以做移动端吗,网站建设就业前景,做网站网页的人是不是思维目录 一.前言
二.Ecmascript 规定的变量有两种
补充
1.基本数据类型#xff08;重点掌握#xff09;
基本数据类型的特点
2.引用数据类型 #xff08;重点掌握#xff09;
引用数据类型的特点
三.什么是栈#xff1f;堆#xff1f;
下面代码帮助了解
解释
官…目录 一.前言
二.Ecmascript 规定的变量有两种
补充
1.基本数据类型重点掌握
基本数据类型的特点
2.引用数据类型 重点掌握
引用数据类型的特点
三.什么是栈堆
下面代码帮助了解
解释
官方解释
总结
四.小练习 烧脑面试题
解释
完整代码 一.前言 在计算机编程中数据是关键的组成部分。了解数据的类型和特性对于编写高效和可靠的代码至关重要。在许多编程语言中包括JavaScript数据可以分为两大类别基本数据类型和引用类型。 基本数据类型是指存储简单数据值的类型它们被视为不可改变的。在JavaScript中基本数据类型包括数字Number、字符串String、布尔值Boolean、空值Null、未定义Undefined和符号Symbol。这些类型的变量在内存中直接存储它们的值且每个变量都相互独立互不影响。 引用类型是指存储对象和复杂数据结构的类型它们可以包含多个值并具有其自己的方法和属性。在JavaScript中引用类型包括对象Object、数组Array、函数Function等。与基本数据类型不同引用类型的变量实际上存储的是对象在内存中的引用地址而不是对象本身。这意味着多个变量可以引用同一个对象对其中一个引用进行修改会影响到其他引用。 深入了解基本数据类型和引用类型的区别和特性对于开发者来说是至关重要的。这种了解有助于理解变量的行为、内存管理、函数传参、数据操作等方面的工作原理。它们的使用和处理方式可能不同因此我们需要掌握如何正确地操作和使用不同的数据类型以避免潜在的错误和性能问题。 在接下来的内容中我们将深入研究基本数据类型和引用类型的各项特性和用法让你更加熟悉它们之间的区别为编写高质量的代码打下坚实的基础。 二.Ecmascript 规定的变量有两种 Ecmascript 规定变量有两种不同的数据类型基本类型 和 引用类型 基本类型 包括number boolean string undefined 引用类型 包括数组和对象 补充 也有其他的不同分类 原始类型 和 对象类型 或者 拥有方法的类型 和没有方法的类型 可变类型 和 不可变类型 以上的这些叫法都是依据两种类型特点来命名的他们只是叫法不同其本质上都是数据类型。 1.基本数据类型重点掌握
基本数据类型的特点 基本类型的特点 基本类型的比较是 值的比较 基本类型的值是不能变的 基本类型的值 存在于 栈区中 2.引用数据类型 重点掌握
引用数据类型的特点 引用类型的特点 引用类型的值 是 可变的 引用类型的比较是 引用的比较 引用类型的值 存在于 栈内存和堆内存中 三.什么是栈堆 栈指的是栈内存存放的数据是先进后出栈自动分配内存空间也会自动释放内存空间 堆指的是堆内存动态分配内存空间大小不确定也不会自动释放内存空间先进先出。 下面代码帮助了解
let arr [1,2,3,4];let arr1 arr; //此时arr1指向 堆内存中的 数组空间arr[1]分手快乐;arr[2]说散就散;console.log(arr); //说明arr1 和arr同时指向一个地方 解释 将数组 arr 赋值给 arr1 时实际上是将堆内存中数组的引用复制给了 arr1。这意味着 arr 和 arr1 都指向相同的数组空间。 所以当你修改 arr 中的元素时例如 arr[1] 分手快乐 和 arr[2] 说散就散这些修改会反映在原始的数组上。由于 arr1 指向同一个数组因此也会反映在 arr1 上。 这是因为数组是引用类型在 JavaScript 中对象包括数组的赋值是传递引用的。所以arr 和 arr1 引用了相同的数组对象它们指向相同的内存空间。任何针对该数组的更改都会被反映在两个变量上。 官方解释 在计算机科学中栈Stack和堆Heap是两种常见的数据结构用于管理程序在内存中的分配和存储。 栈Stack是一种后进先出Last-In-First-OutLIFO的数据结构。它类似于现实生活中的堆叠物品只能从最顶端插入和删除数据。当一个函数被调用时函数的局部变量和参数被存储在栈内存中。每当一个新的函数调用发生时该函数的数据被压入栈的顶部形成一个称为栈帧Stack Frame的数据块。当函数执行完成后栈帧被移出栈控制权返回给调用函数。栈的大小通常是有限的并受限于操作系统或编程语言的设定。 堆Heap是一种用于动态分配内存的区域。与栈不同堆的内存分配和释放没有特定的顺序它是一种自由存储区域。在堆上分配的内存可以通过指针进行访问并且在不同的部分之间共享。在编程中动态创建的对象、数组和其他复杂数据结构通常存储在堆内存中。在堆上分配的内存需要手动进行释放否则可能会导致内存泄漏。 栈和堆在内存管理方面具有不同的特点和使用场景。栈的存储和释放速度较快但容量有限适合存储简单的局部变量和函数调用的上下文信息。堆则可以动态分配大量的内存空间但需要程序员负责手动分配和释放内存并且会存在一定的分配和释放开销。 总结 总的来说栈和堆是计算机内存管理中的两个重要概念。栈用于存储函数调用和局部变量具有快速的分配和释放特性而堆用于动态分配内存适合存储较大的对象和复杂的数据结构但需要手动管理内存的分配和释放。 四.小练习 烧脑面试题 let num num1 10let a {m:1}let b a;a.x a {n:1} console.log(a.x);console.log(b.x);
解释 由于 . 操作高于 联 因此先算a.x {n:1},此时a 和b指向的是内存中 的同一个空间因此b {m:1,x:{n:1} } 然后再计算 a {n:1}这样之前声明的a 会被直接释放只留下一个新的a{n:1} 综上计算结果是 a {n:1} b{ m:1 x:{n:1} } 所以输出的应是 undefined {n:1} 完整代码
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title引用类型/title
/head
body/body
/html
script/*基本数据类型number boolean string undefined null objectEcmascript 规定变量有两种不同的数据类型基本类型 和 引用类型基本类型 包括number boolean string undefined 引用类型 包括数组和对象也有其他的不同分类 原始类型 和 对象类型或者 拥有方法的类型 和没有方法的类型可变类型 和 不可变类型以上的这些叫法都是依据两种类型特点来命名的1.基本类型基本类型的特点基本类型的比较是 值的比较基本类型的值是不能变的基本类型的值 存在于 栈区中2.引用类型引用类型的特点引用类型的值 是 可变的引用类型的比较是 引用的比较引用类型的值 存在于 栈内存和堆内存中栈指的是栈内存存放的数据是先进后出栈自动分配内存空间也会自动释放内存空间堆指的是堆内存动态分配内存空间大小不确定也不会自动释放内存空间先进先出*/let arr [1,2,3,4];let arr1 arr; //此时arr1指向 堆内存中的 数组空间arr[1]分手快乐;arr[2]说散就散;console.log(arr); //说明arr1 和arr同时指向一个地方let arr2 arr.concat() //拷贝arr2[2]体面;console.log(arr);let arr3 arr.slice() //拷贝arr3[2] 移情别恋console.log(arr3);let num num1 10let a {m:1}let b a;a.x a {n:1} /*由于 . 操作高于 联 因此先算a.x {n:1},此时a 和b指向的是内存中的同一个空间因此b {m:1,x:{n:1} } 然后再计算 a {n:1}这样之前声明的a 会被直接释放只留下一个新的a{n:1}综上计算结果是a {n:1}b{m:1x:{n:1}}*/console.log(a.x);console.log(b.x);//声明一个空对象let obj1 {}//给对象添加属性obj1.name 牛郎obj1.act function(){console.log(偷织女的衣服)}obj1.box {abc:老黄牛}console.log(obj1);console.log(obj1.box.abc)/script