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

举个例子:

相关文章
|
前端开发 JavaScript
JavaScript中的原型和原型链
JavaScript中的原型和原型链
861 0
|
存储 JavaScript 前端开发
JavaScript中的数据类型以及存储上的差别
通过本文的介绍,希望您能够深入理解JavaScript中的数据类型及其存储差别,并在实际编程中灵活运用这些知识,以提高代码的性能和稳定性。
381 3
|
8月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
MongoDB 是一种高性能、无模式的文档型数据库,适合需要灵活数据模型、高扩展性和大规模数据存储的应用场景。适用于新项目快速开发、高并发读写、海量数据存储及地理文本查询等需求,且支持类似 JSON 的 BSON 数据格式,灵活易扩展。
149 0
|
8月前
|
设计模式 前端开发 JavaScript
MVVM的理解:
MVVM的理解:
495 0
|
8月前
|
网络协议 安全
跨域怎么处理 ?
跨域怎么处理 ?
175 0
|
8月前
|
JavaScript 前端开发
for of和 for in的区别
JavaScript中,for...of遍历可迭代对象的值,适合数组;for...in遍历对象属性,注意其遍历顺序不确定且包括继承属性,可用hasOwnProperty判断自身属性。同步指任务依次执行,异步则通过回调或事件实现非阻塞执行,适用于耗时任务如网络请求。常见异步方式包括定时器、接口调用、事件监听。
299 0
|
8月前
|
JavaScript 前端开发
forEach与map的区别
forEach与map的区别
401 0
|
8月前
|
前端开发 JavaScript
promise的理解
promise的理解
132 0
|
8月前
|
JavaScript 前端开发
es6新增特性
ECMAScript 6(ES6)是JavaScript的重要升级版本,引入了如`let`和`const`声明变量、箭头函数、块级作用域、类、模板字符串、解构赋值等新特性,提升了代码的简洁性与可维护性。
175 0
|
8月前
|
缓存 安全 Java
Java基础
本段内容介绍了Java基础语法与面向对象的核心知识点,包括方法重载与重写的区别、== 与 equals 的比较,以及 String、StringBuilder 和 StringBuffer 的特性与适用场景,帮助理解 Java 编程中的常见问题和最佳实践。
43 0

热门文章

最新文章