[JS]数据类型

news2025/4/17 9:05:00

介绍

在计算中一切事物都是数据, 为了提高数据的存储和使用效率, 要对数据进行类型的分类

  1. 栈(操作系统): 由操作系统自动分配释放函数的参数值, 局部变量的值等, 其操作方式类似于数据结构中的栈;
  • 基本数据类型存放在栈里面
  • string, number, boolean, undefined, null
  1. 堆(操作系统): 储存复杂类型(对象), 一般由程序员分配释放, 若程序员不释放,由垃圾回收机制回收;
  • 引用数据类型存放在堆里面
  • Object, Array, Date, RegExp

语言类型

弱类型语言: 变量在声明的时候不确定类型的, 赋值后才能确定变量的类型, 如js

强类型语言: 变量在声明的时候就已经确定了类型, 如java

运算符

1.0算术运算符

  • + - * / %
  • %称为 取模(取余),常用于判断某个数字是否被整除
  • let n = 3 % 5 // 得到3, 如果前面比后面小, 余数就是前面的值
  • + 号运算符很智能, 数字相加, 字符相连

2.0一元运算符

  • a++ 前置自增运算符: 先参与运算再自加1;
  • ++a 后置自增运算符:先自加1再参与运算;
  • 自减运算符同上
  • +变量: 隐式转换变量类型为数字型

3.0赋值运算符

  • = ,+= ,-= , *= , /= , %=

4.0逻辑运算符

符号

名称

特点

口诀

&&

逻辑且

两边都为true时,结果才是true

一假则假

||

逻辑或

两边有一个为true, 结果就是true

一真则真

逻辑非

取反

真变假, 假变真

逻辑中断

逻辑中断的作用类似于默认值, 当满足一定条件时让右边的代码不执行

技巧: 先判断左边, 在判断是否短路, 在判断右边, 最后得到结果

5.0比较运算符

<        小于
>        大于
>=       大于等于
<=       小于等于
==       相等  (仅值相等)
!=       不相等
===      全等  (值和数据类型都相等)
!==      完全不等
  1. 比较后得到结果为布尔类型
  2. NaN 不等于任何值, 包括自己 (涉及到NaN比较, 都是false)
  3. 字符串相比较, 会从左到右, 比较字符的ASCII码的值
  4. 不要直接比较小数, 存在精度问题
  • 可以转成整数再比较 (0.1 * 10) > (0.2 * 10)
  1. 不同类型之间 比较 会发生隐式转换,
  • 最终把数据隐式转成number类型比较
  • 所以建议使用 === 或者 !==, 避免隐式转换

6.0运算符优先级

  1. 逻辑非优先级很高
  2. 逻辑与 比 逻辑或 优先级高
  3. 答案: a=false / b=true / c=false

数字类型

Number: 在JS中, 整数, 负数,小数都是数字类型的数据

进制:10进制,2进制,16进制,8进制

数字前面加0表示8进制,数字前面加0x表示16进制。

范围:最大值 (Number.MAX_VALUE);

最小值(Number.MIX_VALUE);

NaN:非数字类型(not a number)

判断:用isNaN()来判断数据是否为数字型, 返回false是数字型,返回true是非数字型。

注意: Nan === NaN // 返回false, NaN不等于值, 包括自己

字符串类型

String: 单引号/双引号/反引号包裹的数据都是字符串类型,

  1. 推荐 使用单引号,与css区分
  2. 嵌套 外单内双或者外双内单
  3. 转义符 (解决冲突问题)
  • 换行 \n
  • 斜杠 \\
  • 单引号 \'
  • 双引号 \"
  • 缩进 \t
  • 空格 \b
  1. 检测 通过字符串length属性可以获取整个字符串的长度
  2. 拼接 字符串+任何类型=拼接后的新字符串
  3. 在控制台打印中, 数字类型是蓝色, 字符串数据是黑色

模版字符串

新的拼接字符串和变量方法, 非常好用的es6新语法

定义: `模板字符串`

解析变量: ${ 变量 }

调用函数: ${ 函数调用 }

特点: 可以识别换行和标签

布尔类型

Boolean: 在计算机中表示肯定或否定时使用布尔类型的数据

布尔值:true表示为真,false表示为假

运算特点:参与加法运算时,true作为1,false作为0

undefined类型

变量声明后不赋值, 它的默认值就是undefinen, 就是未定义值的意思

运算特点: undefined和任何数字相加结果都是NaN

场景: 定义了一个变量, 并且这个变量暂时没有值, 就可以赋值为undefiend

null类型

null就是空的意思, 官方解释为尚未创建的对象

运算特点: null在参与运算时等价于0

场景: 定义了一个变量, 这个变量用于存放对象, 只是对象还没有准备好, 就可以赋值为null

特点: typeof(null) === object, , 所以 null 类似于 let obj = {}

判断数据类型

我们可以通过typeof来检查变量的数据类型。

运算符形式:typeof 变量名

函数形式:typeof(变量名)

数据类型转换

把一种数据类型转成我们需要的数据类型

隐式转换

某些运算符被执行时, 系统内部自动将数据类型进行转换, 称为隐式转换

  1. +号两边只要有一个是字符串, 另一个也会转成字符串
  2. 所以, 任何数据和字符串相加结果都是字符串
  3. - * / 等运算符都会把数据转成数字类型
  4. +号作为正号解析可以转换成数字型 (例: +'11' === 11)
  5. 隐式转换非常方便, 但是依靠经验, 代码可读性一般
  6. null转数字后是0, 空字符串转数字也是0

显示转换

显示转换就是通过明确的代码, 告诉系统数据转成什么类型

编写程序时过度依赖系统内部的隐式转换是不严谨的, 因为隐式转换的规律并不清晰, 依靠经验

1.0转换为字符串

方法

说明

使用

toString()

转换为字符串

变量名.toString();

String()

转换为字符串

String(变量名);

2.0转换为数字型

方法

说明

使用

parseInt(string)

保留整数

parseInt('12px') //12

parseFloat(string)

保留浮点数

parseFloat('12.25px') //12.25

Number()

强制转换成数值型

Number('12') //12

3.0转换为布尔值

方法

说明

使用

Boolean()函数

其他类型转成布尔值

Boolean('true')

  1. 代表空, 否定的值会被转换为false (如 '', 0,NaN,null,undefined)
  2. 其余都是true。

Symbol类型

symbol是一种基本数据类型, 用来创建一个确保唯一性的标识符

作用 :可以作为对象的属性名, 让属性名在对象中保持唯一性

// 传入'a'不影响symbol的值
// 只是作为标记,方便我们调试和观察
let s1 = Symbol('a')
let s2 = Symbol('a')
console.log(s1 === s2)  //false
console.log(s1)  //Symbol(a)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++STL 初阶(5)vector的简易实现(上)

不同于string只实现一个最简单的版本&#xff0c;vector在此处我们要实现的是模版类&#xff0c;类模版的声明和定义分离非常不方便&#xff08;会在链接时报错&#xff09;&#xff0c;所以我们都只在一个vector.h下去实现声明和定义。后续我们提及到的库里面实现的vector也是…

UEC++ 虚幻5第三人称射击游戏(一)

UEC 虚幻5第三人称射击游戏&#xff08;一&#xff09; 创建一个空白的C工程 人物角色基本移动 创建一个Character类添加一些虚幻商城中的基础动画 给角色类添加Camera与SPringArm组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "SpringArm")clas…

正点原子rk3588烧录linux和安卓镜像

1、烧录 Linux buildroot 系统镜像 1.1 进入 Loader 模式&#xff1a; 按住开发板上的 V&#xff08;音量&#xff09;按键不松&#xff0c;给开发板 上电或复位&#xff0c;此时烧录工具会提示&#xff1a;发现一个 LOADER 设备&#xff0c;表示开发板此时已经处于 Loader 模…

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?

什么是深度神经网络&#xff1f;与深度学习、机器学习、人工智能的关系是什么&#xff1f; &#x1f916;什么是深度神经网络&#xff1f;与深度学习、机器学习、人工智能的关系是什么&#xff1f;摘要引言正文内容1. 什么是深度神经网络&#xff1f;&#x1f9e0;1.1 深度神经…

IDEA Plugins中搜索不到插件解决办法

IDEA中搜不到插件有三种解决方案&#xff1a; 设置HTTP选项&#xff0c;可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文&#xff1a;IDEA Plugins中搜索不到插件解决办法本地安装&#xff0c;ile->Settings->Plugin…

Linux下Cmake安装或版本更新

下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…

App推广告别邀请码,Xinstall助您一键触达海量用户!

在移动互联网高速发展的今天&#xff0c;App的推广与运营已成为每个开发者都必须面对的问题。然而&#xff0c;随着互联网流量的日益分散和用户需求的不断变化&#xff0c;传统的App推广方式已经难以满足现代市场的需求。尤其是在获取用户时&#xff0c;很多开发者还在采用传统…

面向对象修炼手册(二)(消息与继承)(Java宝典)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;面向对象修炼手册 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 消息传递 1 基本概念 1.…

关于read,write,open时出现的文本文件和二进制文件读写的问题(怎么写入怎么读)

1、发现问题 使用read读取文本文件&#xff0c;一般采用字符空间作为缓存&#xff0c;最后输出&#xff1b; 使用read读取二进制文件&#xff0c;这里采用整数读取的展示&#xff1a; 首先创建文本文件&#xff0c;用write写入i的值到文件中&#xff1b; 再通过lseek改变读写一…

1.Triangle

一、你好&#xff0c;三角形 在OpenGL中&#xff0c;任何事物都在3D空间中&#xff0c;而屏幕和窗口却是2D像素数组&#xff0c;这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。 3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线&#xff08;Graphi…

松下课堂 | 什么是EPS?通过马达来辅助转向操作的系统

EPS , 松下 EPS是一种通过马达来减轻和辅助驾驶员在转向操作时所需力量的设备。此外&#xff0c;通过采用EPS&#xff0c;可望提高燃效&#xff0c;降低车辆重量。。。 背景 EPS是一种通过马达来减轻和辅助驾驶员在转向操作时所需力量的设备。此外&#xff0c;通过采用EPS&…

深度学习笔记: 最详尽解释欠拟合(高偏差)和过拟合(高方差)

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; 欠拟合&#xff08;高偏差&#xff09;和过拟合&#xff08;高方差&#xff09; 在机器学习和统计建模中…

卡码网KamaCoder 98. 所有可达路径

题目来源&#xff1a;https://kamacoder.com/problempage.php?pid1170 C题解1&#xff1a;深度优先搜索&#xff0c;邻接矩阵 #include <iostream> #include <vector> using namespace std; vector<vector<int>> result; vector<int> path;voi…

毫秒级响应!清科优能应用 TDengine 建设虚拟电厂运营管理平台

小T导读&#xff1a;在清科优能的虚拟电厂运营管理平台建设中&#xff0c;项目初期预计涉及约一万台设备、总数据采集量达数十万&#xff0c;在数据库选择上&#xff0c;其希望能支持至少两千台设备的并发数据处理。本文介绍了清科优能的数据库选型经验以及最终应用效果&#x…

基于jmeter+perfmon的稳定性测试记录!

最近承接了项目中一些性能测试的任务&#xff0c;因此决定记录一下&#xff0c;将测试的过程和一些心得收录下来。 说起来性能测试算是软件测试行业内&#xff0c;有些特殊的部分。这部分的测试活动&#xff0c;与传统的测试任务差别是比较大的&#xff0c;也比较依赖工具&…

数据结构和算法(1) ---- Queue 的原理和实现

Queue 的定义和结构 队列(Queue) 是只允许在一端进行插入&#xff0c;在另一端进行删除的线性表 队列是一种先进先出(First In First Out)的线性表&#xff0c;简称 FIFO(First IN First OUT), 允许插入的一端称为队尾, 允许删除的一端称为队列头 队列的基本结构如下图所示&a…

百老开通知识星球啦,数据要素、数据治理等资料迅速扩散!

1.写在前面&#xff1a; 做数据相关工作有一些年头了&#xff0c;手里也积攒了几千份案例、解决方案、考试认证资料、数据要素研报等材料&#xff0c;形成自我的架构参考库&#xff0c;按TOGAF开发方法&#xff0c;分别形成标准信息库&#xff08;Standards Information Base&…

【论文通读】SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents

SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents 前言AbstractMotivationMethodGUI grounding for LVLMsData ConstructionTraining Details ScreenSpotExperimentsGUI Grounding on ScreenSpotVisual GUI Agent TasksMiniWobAITWMind2WebOther experiment…

使用Inno Setup 6制作软件安装包

制作软件安装包的工具非常多&#xff0c;比如SetupFactory、NSIS、Advanced Installer等等&#xff0c;都可以制作不同样式的软件安装包&#xff0c;但是在这些软件里面&#xff0c;Inno Setup最好&#xff0c;原因是他可以定制化个性的安装界面和卸载界面&#xff0c;只是难度…

贪心推公式——AcWing 125. 耍杂技的牛

贪心推公式 定义 贪心算法是一种在每一步选择中都采取在当前状态下最优的选择&#xff0c;希望通过局部的最优选择来得到全局最优解的算法策略。 运用情况 问题具有最优子结构&#xff0c;即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优…