3 JS类型 值和变量

计算机对value进行操作。 value有不同的类型。每种语言都有其自身的类型集合。编程语言的类型集是该编程语言的基本特性。

value需要保存一个变量中。 变量的工作机制是变成语言的另一个基本特性。

3.1概述和定义

JS类型分为: 原始类型和对象类型。

原始类型: 数值,字符串,布尔值,特殊值 (null, undefined), Symbol(符号) 

对象和数组类型, Set对象(一组值的集合),Map对象(键与值的映射),“定性数组_typed array”(对字节数组和其他二进制数据进行操作),正则RegExp类型(文本模式,字符串的复杂匹配搜索和替换操作),Date类型(日期和时间以及计算),Error。

函数和类,不仅仅是语言的语法,也是特殊的类,是可以被操作的值。

内存会自动回收,释放变量的内存空间。

<tips>: 写程序会造成一些空间程序不会被自动释放>

值的操作:JS为面向对象的,值的操作通过方法(method)来完成。null和undefined没有方法。

原始类型为不可修改的(immutable),对象类型是可修改的(mutable)

JS的值,可以自由转换不同类型。==(相等操作符)会进行类型转换。在实践中使用===(严格相等操作符)

常量,变量:常量用const声明,变量用let声明。

数值

数值范围,IEEE754标准:64位浮点数

3.2.1整数字面量(literal)

十进制:直接输入。十六进制:0x或0X开头。二进制:0b开头,八进制:0o开头。

3.2.2浮点数

[digits][.digits][(E|e)[(+|-)]digits]
实例:
6.02e23
1.4738223E-32

<tips> 可以用下划线将数值分隔为容易看清的数字段。

3.2.3 JS中的算术

+ - * / ** % 

还可以调用Math的方法。

JS计算超出范围不会发生错误。实际会返回Infinity。以除以0为例:

JS 中定义了Number的属性和方法。例子:

3.2.4 二进制浮点数与舍入错误。

系统显示的0.1实际并不相同。示例:

x和y都是0.1,但是浮点值并不相等。 

<Tips:> 不要对小数点(浮点数)比较是否相等。如果需要比较尽量使用整数。比如比较金额是不使用元为单位,而使用分为单位。

3.2.5 通过BigInt雷翔表示任意精度整数

Bigint表示: 在数字后面增加n。

注意: 大数和大数可以进行计算。大数和整数之间不能进行计算。

Math的方法和属性对BigInt无效。

3.2.6 日期和时间

Date是对象。数值为1970年1月1日起至今的毫秒数,也叫时间戳。

3.3文本

key point:

类型: string。 16位值的不可修改的有序序列,每个值均为一个Unicode字符。

从0开始计数索引。

空字符串:长度为0的字符串。

JS没有char类型, 使用长度为1的字符串。

3.3.1 字符串字面量 literal 直接值

用成对的单引号,双引号,或者反引号来界定字符串。 [`text`| 'text'|"text"]

原则字符串在一行写完。 实际可以通过 \n强制分行,用\将两行联成一行。

JS和Html混排是会,不要使用同样的界定符号,以免出现错误断句。

3.3.2字符串字面量(值)中的转义序列

这个类似C语言。

3.3.3字符串的使用

拼接字符串 + 。

字符长长度 s.length.

还有其他的使用方式: 取得字符串的一部分,搜索字符串,布尔值搜索函数,通过修改创建字符串,访问个别字符,字符串填充函数,删除空格函数

<Tips:>字符串不可以被修改。(如同数值不能被修改类似的道理)

3.3.4模板字面量

用反引号的功能。示例:

反引号的功能:单引号报错,反引号返回值。

3.3.5模式匹配

与正则表达式 RegExp相关。功能强大,常用于文本处理。

3.4布尔值

true 或者 false

其他类型的转化规则:

undefined, null,0,-0,NaN,‘’ 转型为 false。其余为true

&& 和操作 || 与操作 !非操作

3.5null与undefined

3.6符号Symbol

JS定义了一个全局符号注册表。 Symbol.for( )会查询注册表,有就返回值,没有就增加到注册表,返回值。

3.7全局变量

3.8不可修改的原始值与可修改的对象引用

JavaScript中的原始值(undefined、null、布尔值、数字和字符串)与对象(包括数组和函数)有着根本区别。原始值是不可更改的:任何方法都无法更改(或“突变”)一个原始值。对数字和布尔值来说显然如此——改变数字的值本身就说不通,而对字符串来说就不那么明显了,因为字符串看起来像由字符组成的数组,我们期望可以通过指定索引来修改字符串中的字符。实际上,JavaScript是禁止这样做的。字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值。

对象和原始值不同,首先,它们是可变的——它们的值是可修改的.

对象的比较并非值的比较:即使两个对象包含同样的属性及相同的值,它们也是不相等的。各个索引元素完全相等的两个数组也不相等。

我们通常将对象称为引用类型(reference type),以此来和JavaScript的基本类型区分开来。

将对象(或数组)赋值给一个变量,仅仅是赋值的引用值:对象本身并没有复制一次。如果你想得到一个对象或数组的副本,则必须显式复制对象的每个属性或数组的每个元素。

同样的,如果我们想比较两个单独的对象或者数组,则必须比较它们的属性或元素。

3.9类型转换

JavaScript中的取值类型非常灵活。

3.8.1 转换和相等性

==会把比较的值进行类型转换。实践过程中==基本可以启用。“===”恒等运算符在判断相等时并未做任何类型转换。

3.8.2 显式类型转换

做显式类型转换最简单的方法就是使用Boolean()、Number()、String()或Object()函数。

需要注意的是,除了null或undefined之外的任何值都具有toString()方法,这个方法的执行结果通常和String()方法的返回结果一致。

JavaScript中的某些运算符会做隐式的类型转换,有时用于类型转换。

在计算机程序中数字的解析和格式化是非常普通的工作,JavaScript中提供了专门的函数和方法用来做更加精确的数字到字符串(number-to-string)和字符串到数字(string-to-number)的转换。

当处理财务或科学数据的时候,在做数字到字符串的转换过程中,你期望自己控制输出中小数点位置和有效数字位数,或者决定是否需要指数记数法。有三个方法: 1. toFixed()根据小数点后的指定位数转换。2.toExponential()转为科学计数法。3.,toPrecision()根据有效数字位数换成

parseInt()函数和parseFloat()函数(它们是全局函数,不从属于任何类的方法)。和Number()相比更加灵活, 。

3.8.3对象转换为原始值

对象到布尔值的转换非常简单:所有的对象(包括数组和函数)都转换为true。

对象到字符串(object-to-string)和对象到数字(object-to-number)的转换是通过调用待转换对象的一个方法来完成的。

所有的对象继承了两个转换方法。第一个是toString(),它的作用是返回一个反映这个对象的字符串。ps.很多类定义了特定版本的toString()方法。

另一个转换对象的函数是valueOf()。

JavaScript中对象到字符串的转换经过了如下这些步骤:

如果对象具有toString()方法,则调用这个方法。

·如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么JavaScript会调用valueOf()方法。

否则,JavaScript无法从toString()或valueOf()获得一个原始值,抛出一个类型错误异常。

在对象到数字的转换过程:JavaScript做了同样的事情,只是它会首先尝试使用valueOf()方法

JavaScript中的“+”运算符可以进行数学加法和字符串连接操作。==,<,!= 会启动类型转换。

3.10变量声明与赋值

在JavaScript程序中,使用一个变量之前应当先声明。

不要重复声明。

3.10.1 使用let和const声明

变量与变量作用域

一个变量的作用域(scope)是程序源代码中定义这个变量的区域。变量和常量具有块作用域。

全局变量拥有全局作用域。函数内声明的变量是局部变量,作用域是局部性的。函数参数也是局部变量。

在函数体内,局部变量的优先级高于同名的全局变量。函数定义是可以嵌套的。由于每个函数都有它自己的作用域。

JavaScript使用了函数作用域(function scope):变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。

JavaScript函数里声明的所有变量(但不涉及赋值)都被“提前”至函数体的顶部。这个特性被非正式地称为声明提前(hoisting)。

<tips:>将变量声明放在函数体顶部,而不是将声明靠近放在使用变量之处。

重复声明

在同一个作用域中使用多个let和const声明同一个名字是语法错误。有例外,尽量不要重复声明。

声明与类型

JS没有类型规定。

3.10.2 使用var的变量声明

.使用vary声明的变量不具有块作用域。

如果在函数体外使用var,会声明一个全局变量。

与通过let声明的变量不同,var可以多次声明同名变量。

3.10.3 解构赋值

destructuring assignment,将右边结构化的值,赋值给左边不同的变量。相当于分别赋值。左右的参数可以不同。如果使用了太复杂的解构赋值,可以将解构赋值的左右两侧对调一下来检查。

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

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

相关文章

消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)

在一个字符串 S 中&#xff0c;如果 SiSi−1 且 Si≠Si1&#xff0c;则称 Si 和 Si1 为边缘字符。 如果 Si≠Si−1 且 SiSi1&#xff0c;则 Si−1和 Si 也称为边缘字符。 其它的字符都不是边缘字符。 对于一个给定的串 S&#xff0c;一次操作可以一次性删除该串中的所有边缘…

python爬虫实战——自动话获取淘宝商品数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: python 3.8 pycharm 专业版 三方库: DrissionPage >>> pip install DrissionPage 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) …

go语言(十九)---- channel

channel的使用 //1. 发送value到channelchannel <- value //2. 接收并将其丢弃<- channel //3. 从channel中接收数据&#xff0c;并将其赋值给x x : <- channel 例子 package mainimport "fmt"func main() {//定义一个channelc : make(chan int)go func…

【数据结构与算法】5.详解双向链表的基本操作(Java语言实现)

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

SpringBoot之时间数据前端显示格式化

背景 在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间&#xff0c;如果我们只是简单的使用 LocalDateTime.now()来传入数据不进行任何处理那么我们就会得到非常难看的数据 解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式…

LeetCode.42. 接雨水

题目 题目链接 分析 读完本题以及结合题目给出的图我们可以很直观的看到&#xff0c;这道题目是让我们求形成凹槽的面积。 我们可以针对每一个数字形成凹槽的面积进行计算&#xff0c;然后相加数组每一个数字形成凹槽的面积即可。 那么问题来了&#xff0c;怎么知道一个数…

【Java与网络6】实现一个自己的HTTP浏览器

前面我们讨论了HTTP协议的基本结构和Socket编程的基本原理&#xff0c;本文我们来整个大活&#xff1a;自己实现一个简单的浏览器。 目录 1.主线程循环体 2.readHostAndPort()方法的实现 3.readHttpRequest()方法的实现 4.sendHttpRequest()方法的实现 5.readHttpRespons…

深度强化学习(王树森)笔记03

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

STM32——创建HAL库工程

第一步 新建工程文件夹 所有文件夹存放的内容&#xff1a; 第二步 拷贝/新建工程相关文件 1、Drivers&#xff08;创建如下文件夹&#xff0c;除readme.txt&#xff09; 文件夹存放的内容&#xff1a; 2、Middlewares和output暂时不需要创建&#xff08;目前用不到&#x…

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低&#xff0c;以L3级别为界&#xff0c;低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

华为配置在用户物理位置变化时部署业务随行示例(V200R006C00、V200R007C00、V200R008C00)

配置在用户物理位置变化时部署业务随行示例&#xff08;V200R006C00、V200R007C00、V200R008C00&#xff09; 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步骤配置文件 组网图形 图1 组网图 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步…

新建一个基于标准库的工程(STM32)

目录 1.新建存放工程的文件夹 2.打开KEIL5软件 3.新建一个本次工程的文件夹 4.添加工程的必要文件 4.1打开STM32的启动文件 ​编辑 4.2&#xff1a; 4.3添加内核寄存器文件 ​编辑 5.回到keil5软件&#xff0c;将刚才复制的那些文件添加到工程中 5.1添加一个启动文件&am…

浅谈WPF之样式与资源

WPF通过样式&#xff0c;不仅可以方便的设置控件元素的展示方式&#xff0c;给用户呈现多样化的体验&#xff0c;还简化配置&#xff0c;避免重复设置元素的属性&#xff0c;以达到节约成本&#xff0c;提高工作效率的目的&#xff0c;样式也是资源的一种表现形式。本文以一个简…

k8s-基础知识(Service,NodePort,CusterIP,无头服务,NameSpace,资源限制)

Node Node 是 Pod 真正运行的主机&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象&#xff0c;Annotations 则是用来记录一些附加信息&#xff0c;用来辅助应…

x-cmd pkg | httpx - 为 Python 设计的下一代 HTTP 客户端库

目录 简介首次用户功能特点进一步探索 简介 HTTPX 是一个为 Python 设计的下一代 HTTP 客户端库&#xff0c;由 Tom Christie 创建。它提供了同步和异步的 API&#xff0c;并支持 HTTP/1.1 和 HTTP/2 协议。与 Requests 库类似&#xff0c;但增加了对异步请求的支持和 HTTP/2 …

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践)

MySql8的简单使用&#xff08;1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践&#xff09; 一.like模糊查询、group by 分组 having 过滤 建表语句 create table student(id int PRIMARY KEY,name char(10),age int,sex char(5)); alter table student add height…

【TOP解刊】IEEE(trans)顶刊,国人绝对优势,同领域2个月录用,5天见刊!

工程技术类 • 顶刊解读 今天带来IEEE旗下工程技术领域顶刊&#xff0c;究竟这本高分期刊审稿情况如何呢&#xff1f;好投吗&#xff1f;一起来看看下文解析。如有投稿意向可重点关注&#xff0c;具体详情见下文&#xff1a; 01 期刊简介 IEEE Transactions on Power Electr…

FlashInternImage实战:使用 FlashInternImage实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

QDockWidget : 想要 top -> left -> rigt -> bottom 的布局实现

上图红圈中的实现&#xff0c;第一次想要实现&#xff0c;总会和想的不一样。 第一种情况 第二种情况 第三种情况 有时候为了达到一种效果&#xff0c;也算是煞费苦心了&#xff0c;且不说这个demo还是找的其他CSDN博主的&#xff0c;但是功夫不负有心人。 解决办法 先让 Doc…

[UI5 常用控件] 03.Icon, Avatar,Image

文章目录 前言1. Icon2. Avatar2.1 displayShape2.2 initials2.3 backgroundColor2.4 Size2.5 fallbackIcon2.6 badgeIcon2.7 badgeValueState2.8 active 3. Image 前言 本章节记录常用控件Title,Link,Label。 其路径分别是&#xff1a; sap.m.Iconsap.m.Avatarsap.m.Image 1…