JavaScript基础之基本数据类型(值类型)详解

数据类型

数据类型是指可以在程序中存储和操作的值的类型,每种编程语言都有其支持的数据类型,不同的数据类型用来存储不同的数据,例如文本,数字等

JavaScript是一种弱类型语言,在定义变量时不需要提前指定变量的类型,变量的类型是在程序运行过程中由JavaScript引擎动态决定的。

JavaScript也是一种动态类型语言,这意味着变量不与特定类型关联。所以可以这么说,一个变量可以用来存储不同类型的数据。例如:

var a   //此时a为undefined
a="hello world"  //a现在为string类型
a=1   //a现在为number类型

基本数据类型(值类型):

数据类型实例说明
Number12,-1,17.23,3.1E-2数值型数据
String“message”,“str”,“name”字符型数据,需加英文双引号单引号
Booleantrue,false布尔型数据,不用加引号,表示逻辑真与假
UndefinedundefinedjavaScript中未定义的值
Nullnull表示空值

通过 typeof 操作符可以检测数据类型,也就是返回变量的数据类型

typeof操作符有带括号和不带括号两种写法

typeof x; //作为运算符的形式--获取变量x的数据类型
typeof(x); //作为函数形式--获取变量x的数据类型

实例:

<script>var a=1; var b="message";var c=true; console.log(typeof a); //输出数据类型为numberconsole.log(typeof b); //输出数据类型为stringconsole.log(typeof c); //输出数据类型为boolean
</script>

注意:

  • JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认

  • 例如Java是强数据类型 例如 int a = 3 必须是整数

基本数据类型

数值类型(Number)

Number型数据即为数值型数据用来表示整数和浮点数。

JavaScript 中的数值类型与数学中的数字是一样的,分为正数、负数、小数等。

整数型数值可以使用十进制、八进制以及十六进制标识

  • 十进制:直接使用数字表示,例如:123、456等。
  • 八进制:以0开头,例如:010、077等。
  • 十六进制:以0x或0X开头,例如:0xFF、0x3F等。
var numn1=1;  //十进制,输出值为1
var numn12=-23; //十进制,输出值为-23
var numn2=0177;//八进制,输出值为127
var numn3=0xA3;//十六进制,输出值为163
console.log(numn1,numn2,numn3);//输出值为1,127,163

需要注意的是,当你在JavaScript中使用八进制或十六进制数值时,它们会被自动转换为十进制表示。例如,010会被解释为十进制的8,0xFF会被解释为十进制的255。

浮点数是指包含小数点的实数,且可用科学计数法来表示。科学计数法一般用于值极大或者极小的时候。

	//Number--浮点数var numfloat=1.23;  //输出值为1.23var numfloat1=-12.34; //输出值为-12.34//科学计算法var numfloat2=152e5;  //值是152乘以10的5次方,即15200000var numfloat3=152e-5; //值是152乘以10的-5次方,即0.00152

如果浮点数看起来是整数,JavaScript会自动将浮点数转换为整数。

原因是JavaScript总是希望使用更少的内存,因为浮点数使用的内存是整数值的两倍。

var message=120.00;  //JavaScript解释整数为200

Number类型所能定义的数值并不是无限的,JavaScript中的Number类型只能表示-(253-1)(253-1)之间的值

获取Number数字类型的范围

  • Number.MIN_VALUE 的值为 5e-324,这是 Number 类型能够表示的最接近于零的正数。这意味着任何小于 5e-324 的正数都会被 JavaScript 解释为 0
  • Number.MAX_VALUE 的值为 1.7976931348623157e+308,这是 Number 类型能够表示的最大值。这意味着任何大于 1.7976931348623157e+308 的数值都会被 JavaScript 解释为 Infinity。
//Number.MIN_VALUE和Number.MAX_VALUEconsole.log(Number.MAX_VALUE);  //输出值:1.7976931348623157e+308console.log(Number.MIN_VALUE);  //输出值:5e-324

这两个属性在处理大量数据或者进行数值范围检查时非常有用。例如,如果你正在处理大量的小数,并且想要检测某个数是否超出了 Number 类型能够表示的范围,你可以使用这两个属性进行比较。

另外,当数值范围超过最大值或最小值时,可以使用Infinity-Infinity来表示无限数

Infinity

  • 当一个数太大,以至于无法用 Number.MAX_VALUE 表示时,JavaScript 会返回 Infinity。
  • 当一个正数除以0时,结果为 Infinity。
  • 使用 Number.POSITIVE_INFINITY可以访问这个值。例如:1 / 0返回 Infinity`。

-Infinity

  • 当一个数太小,以至于无法用 Number.MIN_VALUE 表示时,JavaScript 会返回 -Infinity
  • 当一个负数除以0时,结果为 -Infinity。
  • 使用 Number.NEGATIVE_INFINITY 可以访问这个值。例如:-1 / 0 返回 -Infinity。
console.log(Number.MAX_VALUE+Number.MAX_VALUE);  //输出值:Infinity
console.log(-Number.MAX_VALUE-Number.MAX_VALUE); //输出值:-Infinity

NaN表示值不是数字。他是一个特殊的数值,表示无效数字。当一个操作或计算机结果不是一个有效的数字时,JavaScript会返回NaN

实例:字符串除以数字返回NaN

console.log("a"/2); //NaN

NaN特点

  • 任何与NaN的运算都会返回NaN
  • NaN不等于任何值,包括其本身

实例:

console.log(NaN/2);//NaN
console.log(NaN==NaN);//false

字符串类型(string)

在JavaScript中,字符串是零个或多个字符的序列。JavaScript不区分单个字符和字符串,任何字符或字符串以英文单引号(‘’)或双引号(“”)开头和结尾

通过单引号( ‘’) 、双引号( “”)或反引号(`)包裹的数据都叫字符串,单引号和双引号没有本质上的区别。

特点:

  • 以双引号开头的字符串必须是双引号结尾,以单引号开头的字符串也必须是单引号结尾,以什么引号开头就以什么引号结尾

  • 无论单引号或是双引号必须成对使用

  • 单引号/双引号可以互相嵌套,但是不以自已嵌套自已

  • 必要时可以使用转义符 \ ,输出单引号或双引号

实例:

var user_name = '小明' // 使用单引号
var gender = "男" // 使用双引号
var str = '123' // 看上去是数字,但是用引号包裹了就成了字符串了
var str1 = '' // 这种情况叫空字符串console.log("hello world")  //hello world
console.log('hello world')  //hello world
console.log("hello 'world'") //hello 'world'
console.log('hello "world"') //hello "world"
console.log(`hello world`)  //hello world
console.log('hello \'world\'') //hello 'world'

JavaScript字符串是不可变的,意味着一旦被创建就无法修改。但是可以从现有字符串创建新字符串。例如:

var str="hello"
str=str+"world"
console.log(str) //输出helloworld 

布尔类型(boolean)

boolean型数据表示的是布尔型数据,它有两个固定的值 true 和 false,表示肯定的数据用 true,表示否定的数据用 false,且任何时刻都只能使用两种状态中的一种,不能同时出现。

实例:

 var chooseA=true  //truevar chooseB=false //false
·console.log(typeof chooseA,chooseB) //输出值:boolean false

注意:Boolean型变量赋值时,不能在true或false外面加引号,否则就变成字符串(string)型

undefind(未定义型)

undefined型是未定义类型,未定义是比较特殊的类型,只有一个值 undefined。

默认情况下,当声明变量时但未赋值的情况下,变量的默认值为 undefined。

用于不存在或者没有被赋初始值的变量或对象的属性

// 只声明了变量,并末赋值var strconsole.log(typeof str)  // 结果为 undefined

注意:JavaScript 中变量的值决定了变量的数据类型。

Null型(空值)

Null型数据表示空值,作用是表明数据空缺的值,只有一个值null。一般在设定已存在的变量(或对象的属性)为空时较为常见。

var str=null
console.log(str) // null

对于null和undefined,一般情况下,JavaScript定义null等于undefined

console.log(null == undefined) //输出值:true

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

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

相关文章

[SwiftUI]Text对字符串中部分字符改变颜色和字体

如图&#xff0c;需要对字符串中部分字符改变颜色和字体。 在 SwiftUI 中合并带有不同样式的文本&#xff0c;应该使用不同的 Text 实例并将它们合并起来。将实例使用 运算符合并起来&#xff0c;每个 Text 实例都保持其自己的样式设置。这种方式可以正常编译并运行&#xff0…

蓝桥杯——每日一练(简单题)

题目 有n个整数&#xff0c;使前面各数顺序向后移m个位置&#xff0c;最后m个数变成前面m个数。写一函数&#xff1a;实现以上功能&#xff0c;在主函数中输入n个数和输出调整后的n个数。 解析 一、list&#xff08;&#xff09;函数配合map&#xff08;&#xff09;函数获得…

DNS是什么?DNS在网络通信中的作用是什么?(国科云)

我们在日常工作生活中&#xff0c;大多数情况是通过域名去访问网站、发送邮件。当我们打开一个域名或者访问一个网页时&#xff0c;我们的计算机需要知道这个网站的IP地址&#xff0c;才能完成数据的收发通信。这时&#xff0c;DNS就发挥了至关重要的作用&#xff0c;它像一个巨…

跨域请求详解

跨域请求 一 同源策略 同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的&#xff0c;浏…

ps---1.使用置入嵌入的智能化对象命令制作拼贴画

ps—使用置入嵌入的智能化对象命令制作拼贴画 素材 步骤 打开背景图 置入嵌入对象&#xff08;置入完&#xff0c;移动到正确的位置&#xff0c;回车或双击&#xff09; 栅格化图层 重复上述步骤制作拼贴画

第二百八十八回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容&#xff0c;本章回中将介绍如何播放视频.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

BGP故障分析——邻居无法建立的原因

点赞关注&#xff0c;持续更新&#xff01;&#xff01;&#xff01; BGP邻居关系无法建立的原因 底层IGP网络不通&#xff1b;接口是否调用了ACL过滤了TCP的179端口&#xff1b;邻居的Router ID冲突&#xff1b;配置的邻居的AS号错误&#xff1b;用Loopback建立邻居时没有配…

apex如何保存多行字符串

虽然可以用换行符把很长的字符串放在一行&#xff0c;但是不便于阅读。apex没有像python中三个引号这种直接支持多行字符串的格式&#xff0c;可以用下面这种方法&#xff1a; String query SELECT Project__c, Project__r.Testing_Submitted__c, Project__r.Project_Sub_P…

go语言(二十)---- 有缓冲的channel

有缓冲的channel 举个例子 package mainimport ("fmt""time" )func main() {c : make(chan int,3) //带有缓冲的 channelfmt.Println("len(c) ",len(c),",cap(c)",cap(c))go func() {defer fmt.Println("子go程结束")for i…

视频监控方案设计:EasyCVR视频智能监管系统方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

HTML-框架标签、实体、全局属性和元信息

HTML 1.框架标签 <iframe name"b站" src"https://www.bilibili.com" width"500" height"300" frameborder"0"></iframe>iframe 标签的实际应用&#xff1a; 在网页中嵌入广告。与超链接或表单的 target 配合&a…

Google的guava缓存学习使用

导入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version> </dependency>使用 项目中使用到了缓存&#xff0c;定义一个切面&#xff0c;拦截类或方法上存在Sy…

SQL 系列教程(六)

目录 SQL FOREIGN KEY 约束 SQL FOREIGN KEY 约束 创建表时的 FOREIGN KEY 约束 修改表时的 FOREIGN KEY 约束 撤销 FOREIGN KEY 约束 SQL CHECK 约束 SQL CHECK 约束 创建表时的 CHECK 约束 修改表的 CHECK 约束 撤销 CHECK 约束 SQL DEFAULT 约束 SQL DEFAULT 约…

[二叉树专题]二叉树最大高度|n叉树最大高度

一、二叉树最大高度 class Solution { public:int maxDepth(TreeNode* root) {if(rootnullptr)return 0;int left maxDepth(root->left)1;int rightmaxDepth(root->right)1;return left>right?left:right;} }; 二、n叉树最大高度 class Solution { public:int maxDe…

QSqlQuery 执行Update 判断执行成功与否

1.执行更新操作的SQL语句 update s_info set name"009" where contact_number "13511112222" 怎么样判断是否确实更新操作是执行成功的 &#xff0c;可以通过下列语句判断 query.numRowsAffected() > 0 2.主要的几步操作如下: QSqlQuery query;query.…

力扣hot100 实现Trie(前缀树) 字典树 一题双解

Problem: 208. 实现 Trie (前缀树) 文章目录 思路复杂度&#x1f49d; TrieNode版&#x1f49d; 二维数组版 思路 &#x1f469;‍&#x1f3eb; 宫水三叶 复杂度 &#x1f49d; TrieNode版 public class Trie {class TrieNode{boolean end;//标记是否有以当前节点为结尾的字…

【Origin绘图系列第4棒】桑基图

Origin绘制桑基图 桑基图&#xff08;Sankey diagram&#xff09;&#xff0c;即桑基能量分流图&#xff0c;也叫桑基能量平衡图。它是一种特定类型的流程图&#xff0c;右图中延伸的分支的宽度对应数据流量的大小&#xff0c;通常应用于能源、材料成分、金融等数据的可视化分…

Linux生成SSH公钥和密钥

目录 前言生成ssh keys使用公钥 前言 SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于在不安全的网络上安全地进行远程访问和数据传输。它为用户提供了一种加密的通信方式&#xff0c;可以在客户端和服务器之间建立安全的连接。 SSH使用公钥加密技术…

阿里云幻兽帕鲁服务器创建和配置教程

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

计算机网络-奈氏准则和香农定理(码间串扰 二者区别)

文章目录 失真失真的一种现象-码间串扰奈氏准则&#xff08;奈溃斯特定理&#xff09;例题 香农定理例题 奈氏和香农 失真 就是指与原来的不一样了 两种情况 前三个是正相关&#xff0c;最后一个是负相关 码元传输速率越快&#xff0c;失真程度越严重的原因可能包括以下几点…