[JS]数据类型

介绍

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

  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.mzph.cn/bicheng/31869.shtml

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

相关文章

matplotlib 创建多个子图

有些时候我们需要用for循环来创建多个子图&#xff0c;来对比特征。现在已画出8组随机数来作为示例。 from matplotlib import pyplot as plt import numpy as np #设置画布大小 figplt.figure(figsize(20,8)) #解决中文乱码问题 plt.rcParams[font.sans-serif] [SimHei] fo…

【2024最新精简版】Kafka面试篇

文章目录 Kafka和RabbitMQ什么区别讲一讲Kafka架构你们项目中哪里用到了Kafka?为什么会选择使用Kafka? 有什么好处 ?使用Kafka如何保证消息不丢失 ?消息的重复消费问题如何解决的 ?Kafka如何保证消费的顺序性 ?Kafka的高可用机制有了解过嘛 ?Kafka实现高性能的设计有了解…

[C#]winform基于opencvsharp实现黑白图像上色

【算法简介】 技术有时会提高艺术&#xff0c;但有时也会破坏艺术。着色黑白电影是一个可以追溯到1902年的古老想法。几十年来&#xff0c;许多电影创作者反对将黑白电影着色的想法&#xff0c;并将其视为对艺术的破坏。但今天它被接受为艺术形式的增强。该技术本身已经从艰苦…

PCB行业迈入数字化新时代,智能工厂引领未来制造

在传统的PCB生产过程中&#xff0c;人工操作、纸质记录、经验判断等方式占据了主导地位。然而&#xff0c;这种方式不仅效率低下&#xff0c;而且容易出现误差&#xff0c;导致产品质量不稳定。同时&#xff0c;随着市场竞争的加剧&#xff0c;客户对产品的交期、质量、成本等方…

自制HTML5游戏《开心消消乐》

1. 引言 游戏介绍 《开心消消乐》是一款基于HTML5技术开发的网页游戏&#xff0c;以其简单的操作方式、轻松的游戏体验和高度的互动性&#xff0c;迅速在社交平台上获得了广泛的关注和传播。玩家通过消除相同类型的元素来获得分数&#xff0c;游戏设计巧妙&#xff0c;易于上手…

力扣SQL50 项目员工 I ROUND AVG

Problem: 1075. 项目员工 I &#x1f468;‍&#x1f3eb; 参考题解 Code select project_id,ROUND(AVG(e.experience_years),2) as average_years FROMproject as p LEFT JOINemployee as e ONp.employee_id e.employee_id GROUP BYp.project_id;

SUSE linux 15的网络管理

1 手工配置网络 wicked提供了一种新的网络配置框架。自SUSE 12起&#xff0c;SUSE使用了新的网络管理工具wicked&#xff0c;这个是区别与其他常见发行版的。常见的发行版目前大多使用的是NetworkManager服务进行网络管理。 1.1 wicked网络配置 传统网络接口管理面临的挑战之…

sdlan如何智能组网?

【天联】组网是一款异地组网内网穿透产品&#xff0c;由北京金万维科技有限公司自主研发&#xff0c;旨在解决不同地区电脑与电脑、设备与设备、电脑与设备之间的信息远程通信问题。【天联】的操作简单、跨平台应用、无网络要求以及独创的安全加速方案等特点&#xff0c;使得它…

什么是局域网IP?

局域网IP&#xff08;Local Area Network IP&#xff09;指的是在局域网内使用的IP地址。局域网是指在某个地理区域内&#xff0c;由一组相互连接的计算机组成的小型网络&#xff0c;常见于家庭、学校、办公室等场所。局域网IP可以用来实现内网穿透&#xff0c;即在复杂的网络环…

【性能优化】表分区实践最佳案例

背景 随着数字化建设的持续深入&#xff0c;企业的业务规模迎来了高速发展&#xff0c;其数据规模也呈现爆炸式增长&#xff0c;如果继续使用传统解决方案&#xff0c;将所有数据存储在一个表中&#xff0c;对数据的查询和维护效率将是一个巨大的挑战&#xff0c;在这个背景下…

MySQL数据备份操作步骤

常见的数据备份命令 备份命令备份速度恢复速度介绍功能适用场景lvm2快照快快一般、支持几乎热备、速度快一般中小型数据量的备份cp快快物理备份、灵活性低很弱少量数据备份xtrabackup较快较快实现innodb热备、对存储引擎有要求强大较大规模的备份mysqldump慢慢逻辑备份、适用所…

【React】AntD组件---极客园--01.项目前置准备

项目搭建 基于CRA创建项目 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start调整项目目录结构 -src-apis 项目接口函数-assets 项目资源文件&…

制作WIFI二维码,实现一键扫描连接WIFI

在现代社会&#xff0c;Wi-Fi已成为我们日常生活中不可或缺的一部分。无论是在家庭、办公室还是公共场所&#xff0c;我们都希望能够快速方便地连接到Wi-Fi网络。下面小编就来和大家分享通过制作WIFI二维码&#xff0c;来实现一键扫描就可以连接WIFI的方法。连接WIFI不用在告诉…

【仿真建模-anylogic】INetwork相关接口说明

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-22 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 说明 INetwork为辊道网络、路线网路的顶层接口&#xff0c;其组成元素有节点和路径两种&#xff0c;对应的接口为INode、IP…

vue:vue2与vue3如何全局注册公共组件(包括涉及到的相关方法函数的讲解)

目录 第一章 vue2全局注册公共组件 1.1 方法一&#xff1a;逐个注册 1.2 方法二&#xff1a;批量注册 1.2.1 require.context()方法解释 第二章 vue3全局注册公共组件 1.1 方法一&#xff1a;逐个注册 1.2 方法二&#xff1a;批量注册 第一章 vue2全局注册公共组件 Vue…

[C++][数据结构][跳表]详细讲解

目录 0.什么是跳表&#xff1f;1.SkipList的优化思路2.SkipList的效率如何保证&#xff1f;3.SkipList实现4.SkipList VS 平衡搜索树 && Hash 0.什么是跳表&#xff1f; SkipList本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树…

Linux测试服务器端口是否打开

前言 服务器端口在计算机网络通信中扮演着至关重要的角色&#xff0c;其作用可以归纳如下&#xff1a; 区分不同的应用程序或服务&#xff1a; 服务器端口用于标识和定位不同应用程序或服务在服务器上的通信入口。 通过不同的端口号&#xff0c;服务器可以同时运行多个应用程…

73. UE5 RPG 优化投射物以及敌人生成

解决发射物会与地面产生交互的问题 之前一直遇到发射物的体积过大会在发射时&#xff0c;和地面产生交互&#xff0c;我们可以调整小一些&#xff0c;然后为了防止它和自身产生交互事件。我们可以实现它在生成后&#xff0c;不会触发相关事件&#xff0c;而是在一定时间后。 对…

【STM32--Cortex-M3】

STM32-Cortex-M3 ■ Cortex-M3 处理器内核到基于Cortex-M3的MCU■ ARM的各种架构版本■ 指令集■ Cortex-M3简介■ Cortex-M3寄存器组■ Cortex-M3■ Cortex-M3■ Cortex-M3 ■ Cortex-M3 处理器内核到基于Cortex-M3的MCU Cortex-M3处理器内核是单片机的中央处理单元&#xff…

WordPress简单好看的线报主题模板源码

安装说明 到WordPress管理后台中的「外观」-「主题」中点击「添加」&#xff0c;选择baolog的主题包进行上传安装并启用即可。 提示&#xff1a;为了防止主题不兼容&#xff0c;请在安装主题前进行数据备份&#xff0c;防止数据字段重复覆盖等情况发生。 源码截图 源码下载 …