[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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式1-简介

设计模式简介 专栏的目的什么是设计模式设计模式要学什么软件开发原则主流设计模式 学习建议经典面试题 资源 专栏的目的 1.理解松耦合的设计思想 2.掌握面向对象设计原则 3.掌握重构技法改善设计 4.掌握GOF核心设计模式 什么是设计模式 每一个模式描述了一个在我们周围不…

docker 环境部署

1.Redis部署 用docker拉取redis镜像 docker pull redis 用docker查看拉取的镜像版本号&#xff0c;这里查到的是 6.2.6 版本 docker inspect redis 通过wget指令下载对应版本的tar包&#xff0c;下载完成后解压 wget https://download.redis.io/releases/redis-6.2.6.tar.gz …

【2024.6.22】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Python抓取高考网图片

Python抓取高考网图片 一、项目介绍二、完整代码一、项目介绍 本次采集的目标是高考网(http://www.gaokao.com/gkpic/)的图片,实现图片自动下载。高考网主页如下图: 爬取的流程包括寻找数据接口,发送请求,解析图片链接,向图片链接发送请求获取数据,最后保存数据。 二…

Android设置页面Activity全屏(隐藏导航栏、状态栏)

3、代码中设置&#xff1a;在setContentView 之前调用 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注意&#xff1a; 当有全面屏手机可以显示虚拟…

geojson文件默认已有的style会导致webGL渲染错误处理办法

geojson文件默认已有的style会导致webGL渲染错误处理办法 相关链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 代码&#xff1a; export function showDraw(isFlyTo) {removeLayer()graphicLayer new mars3d.layer.GeoJsonLayer({data: {type: &quo…

vue3-openlayers 轨迹回放(历史轨迹),实时轨迹

vue3-openlayers 轨迹回放&#xff08;历史轨迹&#xff09;&#xff0c;实时轨迹 本篇介绍一下使用vue3-openlayers轨迹回放&#xff08;历史轨迹&#xff09;&#xff0c;实时轨迹 1 需求 轨迹回放&#xff08;历史轨迹&#xff09;实时轨迹 2 分析 可以使用和上一篇相同…

【一步一步了解Java系列】:认识异常类

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…

Python中用于从图像中提取文本的8大OCR库

介绍 你是否曾想过你的电脑如何能够从图像中读取文字&#xff1f;这都要归功于一种叫做光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;的技术。 在Python中&#xff0c;有一些非常酷的库可以帮助你的电脑理解图片中的文字。从谷歌强大的Tesseract到E…

热点观察 | 全球社交应用IAP收入持续上升,小游戏、短剧出海赛道火热!

2024年进度条即将过半&#xff0c;回顾上半年&#xff0c;“Sora横空出世”、“短剧出海”、“小游戏爆款不断"给了我们太多惊喜&#xff0c;虽说如今市场竞争激烈、行业日趋饱和&#xff0c;但新技术、新需求也在快速跟上。下面&#xff0c;我们就来盘一盘近期全球手游和…

Python | Leetcode Python题解之第166题分数到小数

题目&#xff1a; 题解&#xff1a; class Solution:def fractionToDecimal(self, numerator: int, denominator: int) -> str:if numerator % denominator 0:return str(numerator // denominator)s []if (numerator < 0) ! (denominator < 0):s.append(-)# 整数部…

开发指南033-数据库兼容

元芳&#xff0c;你怎么看&#xff1f; 单一数据库自身就有一些不同处理之处&#xff0c;如果一个平台要兼容所有数据库&#xff0c;就是难上加难&#xff0c;像isnull函数各数据库就不同。 对于这类问题&#xff0c;平台采用统一自定义函数解决&#xff0c;例如上面的round函…

【Leetcode】2663. 字典序最小的美丽字符串

题目 题目链接&#x1f517;如果一个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; 它由英语小写字母表的前 k 个字母组成。它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。请你找出并返回一个长度为 n…

Android低版本上APP首次启动时间减少80%(二)

06-25 15:10:53.821 7449 7450 D dalvikvm: threadid2: sending two SIGSTKFLTs to threadid135 (tid8021) to cause debuggerd dump SIGSTKFLT 是 Dalvik 虚拟机特有的一个信号。当虚拟机发生了 ANR 或者需要做 GC 的时候&#xff0c;就需要挂起所有 RUNNING 状态的线程&…

技巧:合并多个RAR分卷压缩

因为文件压缩之后体积仍然过大&#xff0c;大家可能会选择进行分卷压缩&#xff0c;那么rar分卷压缩包之后如何合并成一个压缩包文件呢&#xff1f;今天我们来学习rar分卷压缩包&#xff0c;合并成一个的方法。 最基础的方法就是将分卷压缩包解压出来之后&#xff0c;再将文件…

第10章 启动过程组 (概述)

第10章 启动过程组 概述&#xff0c;在第三版教材第354~355页&#xff1b; 文字图片音频方式 视频11 第一个知识点&#xff1a;两个过程 如图10-1 启动过程组第二个知识点&#xff1a;目的 协调各方干系人的期望与项目目的&#xff0c;告知各干系人项目范围和目标&#xff0c…

如何用 Google Chrome 浏览器浏览经过 XSLT 渲染的 XML 文件

对于经过XSLT渲染的XML文件&#xff0c;本来&#xff0c;可以直接用 IE (Internet Explorer) 打开&#xff0c;就能看到渲染之后的样子&#xff0c;很方便。但是后来&#xff0c;微软把 IE 换成了 Microsoft Edge&#xff0c;按理说这是比 IE 更先进的浏览器&#xff0c;可是偏…

软件缺陷及JIRA工具

一、软件缺陷及跟踪流程 1&#xff0c;软件缺陷信息 案例 &#xff08;1&#xff09;缺陷报告的基本内容 缺陷的标题 预置条件 重现步骤 期望结果 实际结果 &#xff08;2&#xff09;软件缺陷的状态 新建 打开 修复 关闭 &#xff08;3&#xff09;软件缺陷的严重程度 …

【计算机毕业设计】204基于微信小程序疫情期间学生请假与销假系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【论文阅读】-- Attribute-Aware RBFs:使用 RT Core 范围查询交互式可视化时间序列颗粒体积

Attribute-Aware RBFs: Interactive Visualization of Time Series Particle Volumes Using RT Core Range Queries 摘要1 引言2 相关工作2.1 粒子体渲染2.2 RT核心方法 3 渲染彩色时间序列粒子体积3.1 场重构3.1.1 密度场 Φ3.1.2 属性字段 θ3.1.3 优化场重建 3.2 树结构构建…