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.rhkb.cn/news/246511.html

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

相关文章

单片机学习笔记---矩阵键盘

目录 矩阵键盘的介绍 独立按键和矩阵按键的相同之处&#xff1a; 矩阵按键的扫描 代码演示 代码模块化移植 Keil自定义模板步骤&#xff1a; 代码编写 矩阵键盘就是开发板上右下角的这个模块 这一节的代码是基于上一节讲的LCD1602液晶显示屏驱动代码进行的 矩阵键盘的介…

阿里云负载均衡对接

1 、开通负载均衡产品 2 、ALB / NLB / CLB ALB&#xff1a; 应用型负载均衡 &#xff0c; 给定对应服务域名与当前实例DNS绑定之后即可使用 支持&#xff1a; HTTP/HTTPS/QUIC等应用层流量协议 NLB&#xff1a; 网络型负载均衡 支持&#xff1a; TCP / UDP / TCPSSL C…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

分布式id-Leaf算法

一、介绍 由美团开发&#xff0c;开源项目链接&#xff1a;https://github.com/Meituan-Dianping/Leaf Leaf同时支持号段模式和snowflake算法模式&#xff0c;可以切换使用。ID号码是趋势递增的8byte的64位数字&#xff0c;满足上述数据库存储的主键要求。 Leaf的snowflake模…

基于springboot的房屋交易系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Unity 适配器模式(实例详解)

文章目录 简介1. **Input Adapter 示例**2. **Component Adapter 示例**3. **网络数据解析适配器**4. **物理引擎适配**5. **跨平台服务适配** 简介 Unity中的适配器模式&#xff08;Adapter Pattern&#xff09;主要用于将一个类的接口转换为另一个接口&#xff0c;以便于原本…

循环测试之旅——深度解析Pytest插件 pytest-repeat

在软件开发中,测试的重要性不言而喻。而为了提高测试的鲁棒性和可靠性,Pytest插件 pytest-repeat 应运而生。这个插件可以帮助你轻松实现测试用例的循环运行,以更全面地评估代码的稳定性。本文将深入介绍 pytest-repeat 插件的基本用法和实际案例,助你更好地利用循环测试,…

短视频矩阵系统软件/电脑pc企业版/手机端双开发~~源头

短视频矩阵系统软件开发的属性主要包含以下几个方面&#xff1a; 开发属性&#xff1a; 1. 功能属性&#xff1a;功能是短视频矩阵系统的核心属性&#xff0c;包括短视频的采集、编辑、发布、推广、互动等功能。此外&#xff0c;系统的个性化定制也是考虑的重要因素&#xff0…

云计算中的弹性是什么?

云弹性是指当客户需求增加或减少时&#xff0c;自动从数据中心配置和取消配置资源。这使得云资源(包括计算、存储和内存资源)能够根据需求变化快速重新分配。CPU/处理、内存、输入/输出带宽和存储容量等计算资源可以根据需要增加或减少&#xff0c;而不会影响系统性能。 它旨在…

如何在前端项目里接入Sentry监控系统并通过企业微信通知

能不能让用户录个屏过来呀&#xff1f; 用户使用的是什么机型的手机&#xff1f; 用户使用的什么浏览器呀&#xff1f; 用户的网络是什么情况&#xff1f; … … 线上出现问题时&#xff0c;技术部和业务部同学之间的对话诸如此类…业务同学也很栓Q呀&#xff0c;硬着头皮去问客…

预训练语言模型transformer

预训练语言模型的学习方法有三类&#xff1a;自编码&#xff08;auto-encode, AE)、自回归&#xff08;auto regressive, AR&#xff09;&#xff0c;Encoder-Decoder结构。 决定PTM模型表现的真正原因主要有以下几点&#xff1a; 更高质量、更多数量的预训练数据增加模型容量…

插槽(64-67)

文章目录 插槽1.插槽 - 默认插槽(组件内可以定制一处结构)2.插槽 - 后备内容&#xff08;默认值&#xff09;3.插槽 - 具名插槽(组件内可以定制多处结构)4.作用域插槽(插槽的一个传参语法) 插槽 插槽分类:默认插槽和具名插槽 1.插槽 - 默认插槽(组件内可以定制一处结构) 作用…

【CSS】字体效果展示

测试时使用了Google浏览器。 1.Courier New 2.monospace 3.Franklin Gothic Medium 4.Arial Narrow 5.Arial 6.sans-serif 7.Gill Sans MT 8.Calibri 9.Trebuchet MS 10.Lucida Sans 11.Lucida Grande 12.Lucida Sans Unicode 13.Geneva 14.Verdana 15.Segoe UI 16.Tahoma 17.…

AWS 专题学习 P11 (Machine Learning)

文章目录 专题总览机器学习服务1. Amazon Rekognition2. Amazon Rekognition - Content Moderation3. Amazon Transcribe4. Amazon Polly5. Amazon Polly - Lexicon & SSML6. Amazon TranscribeAmazon Translate7. Amazon Lex & Connect8. Amazon Comprehend9. Amazon …

大数据期望最大化(EM)算法:从理论到实战全解析

文章目录 大数据期望最大化&#xff08;EM&#xff09;算法&#xff1a;从理论到实战全解析一、引言概率模型与隐变量极大似然估计&#xff08;MLE&#xff09;Jensen不等式 二、基础数学原理条件概率与联合概率似然函数Kullback-Leibler散度贝叶斯推断 三、EM算法的核心思想期…

环形链表的检测与返回

环形链表 王赫辰/c语言 - Gitee.com 快慢指针的差距可以为除一以外的数吗&#xff1f;不可以如果差奇数则无法发现偶数环&#xff0c;是偶数无法发现奇数环&#xff0c;本题思路为指针相遇则为环&#xff0c;而以上两种情况会稳定差一&#xff0c;导致指针永不相遇 最终返回…

Discuz论坛搭建:Linux宝塔面板一键部署,固定地址畅享公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装基础环境二. 一键部署Discuz三. 安装cpolar工具四. 配置域名访问Discuz…

Android SharedPreferences源码分析

文章目录 Android SharedPreferences源码分析概述基本使用源码分析获取SP对象初始化和读取数据写入数据MemoryCommitResultcommitToMemory()commit()apply()enqueueDiskWrite()writeToFile() 主动等待写回任务结束 总结 Android SharedPreferences源码分析 概述 SharedPrefer…

Parallels Desktop 19 for Mac虚拟机 一键激活版

Parallels Desktop是一款功能强大的虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机&#xff0c;该软件具有快速启动和关闭虚拟机的能力&#xff…

Servlet 与 MVC

主要内容 Servlet 重点 MVC 重点 Filter 重点 章节目标 掌握 Servlet 的作用 掌握 Servlet 的生命周期 掌握 JSP 的本质 掌握 MVC 的设计思想 掌握 Filter 的作用及使用场景 第一节 Servlet 1. Servlet 概念 Servlet 是在服务器上运行的能够对客户端请求进行处理&a…