JS的数据类型,储存上的差距

简介: JavaScript 中的数据类型分为基本类型和引用类型,存储方式和占用空间不同。基本类型包括布尔值、数字、字符串、null 和 undefined,占用空间小;引用类型如对象、数组和函数则占用更多空间。合理选择数据类型可优化程序性能。

JavaScript 中有几种不同的数据类型,这些数据类型在储存上的差距是有区别的。

  • 原始数据类型:原始数据类型包括布尔值(boolean)、数字(number)、字符串(string)和空值(null)、未定义(undefined)五种。这些数据类型在储存上占用的空间很小,通常只需要几个字节。
  • 对象类型:对象类型包括数组(array)、函数(function)、对象(object)等。这些数据类型在储存上占用的空间相对较大,因为它们可能包含多个属性或方法。

总之,不同的数据类型在储存上的差距是有区别的,你应该根据使用场景来选择合适的数据类型。

数据类型分两大类

  1. 基本数据类型,变量保存的是
  2. 引用数据类型,变量保存的是引用地址

闭包的理解和使用

闭包是一种特殊的对象,它包含了一个函数和与该函数相关的引用环境。

闭包的函数可以访问闭包创建时的环境,即使在该函数被调用时,外部的环境已经发生了变化。这使得闭包很适合用来做回调函数或者保存状态。

举个例子,假设你有一个函数,它接受一个数字作为参数,并返回一个函数。该返回的函数可以对传入的数字进行累加,每次调用都会将累加器加 1:

在上面的例子中,createAdder 函数创建了一个闭包,该闭包包含了一个函数和与该函数相关的环境。这个环境包含了变量 x 的值。当我们调用 createAdder(5) 时,它返回了一个新函数,这个函数可以对传入的参数 y 进行累加。在这个函数中,变量 x 的值是 5,所以调用 add5(2)add5(10) 时,都会将它们的参数与 5 相加。

闭包是一种非常有用的技术,它可以帮助你保存状态、创建封装的函数等

作用域

在 JavaScript 中,作用域是指程序中定义变量和函数的区域。一般来说,变量和函数在它们被声明的地方可用,并且其他地方不可用。

JavaScript 中有两种类型的作用域:全局作用域和局部作用域。

全局作用域:全局作用域是整个程序的范围。在全局作用域中声明的变量和函数可在整个程序的任何地方使用。如果在函数内部声明的变量没有使用 var 关键字,则该变量也是全局变量。

局部作用域:局部作用域是在函数内部定义的作用域。在局部作用域中声明的变量和函数仅在函数内部可用,在函数外部不可用。使用 var 关键字声明的变量是局部变量,如果没有使用 var 关键字,则该变量是全局变量。

举个例子:

上面的代码中,globalVariable 和 globalFunction 是全局变量和函数,它在整个程序的任何地方都可以访问。localScope 函数中的 localVariable 是局部变量,只能在函数内部访问,在函数外部访问会抛出 ReferenceError 错误。

另外,JavaScript 中还有一个概念叫做闭包,它可以让我们在函数外部访问函数内部的局部变量。这是通过在函数内部返回另一个函数来实现的。

举个例子:

相关文章
|
2月前
|
JavaScript 前端开发
for of和 for in的区别
JavaScript中,for...of遍历可迭代对象的值,适合数组;for...in遍历对象属性,注意其遍历顺序不确定且包括继承属性,可用hasOwnProperty判断自身属性。同步指任务依次执行,异步则通过回调或事件实现非阻塞执行,适用于耗时任务如网络请求。常见异步方式包括定时器、接口调用、事件监听。
140 0
|
2月前
|
JavaScript 前端开发
forEach与map的区别
forEach与map的区别
161 0
|
资源调度 JavaScript 定位技术
Vue使用高德地图实现点击获取经纬度以及搜索功能
Vue使用高德地图实现点击获取经纬度以及搜索功能
938 0
|
1月前
|
算法 Java C语言
弗洛伊德算法求最短路径
弗洛伊德算法用于寻找加权图中各顶点间的最短路径,适用于无向图和有向图。算法基于动态规划思想,通过枚举中间顶点来更新路径,确保最终得到最短路径。该算法要求路径权值非负,否则可能出错。
105 0
|
2月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
MongoDB 是一种高性能、无模式的文档型数据库,适合需要灵活数据模型、高扩展性和大规模数据存储的应用场景。适用于新项目快速开发、高并发读写、海量数据存储及地理文本查询等需求,且支持类似 JSON 的 BSON 数据格式,灵活易扩展。
50 0
|
机器学习/深度学习 人工智能 算法
Post-Training on PAI (3):PAI-ChatLearn,PAI 自研高性能强化学习框架
人工智能平台 PAI 推出了高性能一体化强化学习框架 PAI-Chatlearn,从框架层面解决强化学习在计算性能和易用性方面的挑战。
|
2月前
|
JavaScript 前端开发
es6新增特性
ECMAScript 6(ES6)是JavaScript的重要升级版本,引入了如`let`和`const`声明变量、箭头函数、块级作用域、类、模板字符串、解构赋值等新特性,提升了代码的简洁性与可维护性。
92 0
|
2月前
|
网络协议 安全
跨域怎么处理 ?
跨域怎么处理 ?
65 0
|
2月前
|
前端开发 JavaScript
promise的理解
promise的理解
48 0