JavaScript变量及数据类型

目录

概述:

变量:

前言:

变量的命名:

定义变量:

为变量赋值:

变量提升:

let和const关键字:

JS数据类型:

前言:

typeof操作符:

JS基本数据类型:

String(字符串):

Number(数值):

Boolean(条件):

Null(空):

Undefined(未定义):

Symbol(独一无二):

JS引用数据类型:

Object(对象):

Array(数组):

Function(函数):


概述:

        在JavaScript中我们可以使用变量来存储数据,而我们存储的数据又可以分为:字符串,数字,布尔值,数组等,并可以更改变量的值,因为变量如其名可变的量。数据类型,指的是对数据进行操作时数据的类型,不同的数据可以使用不同的类型来存储,如123这个数值,或者'字'文本等等。如下图所示:JavaScript简介-CSDN博客 还可以参考:C语言操作符和数据类型的存储详解_f2(&b)运算的是主函数还是调用函数-CSDN博客

变量:

前言:

        在编程中我们要对数据进行操作就很难离开变量这个东西,因为我们得有数据才能对数据进行操作而有数据,数据又该放到哪里,所以就使用变量来存储数据,变量可以存储字符串("abc"),数字(123),布尔值(true,false),数组等等,并且我们可以随时读取变量的值,和修改变量的值。变量是一个可变的量

变量的命名:

在JavaScript我们若想定义变量,那就需要遵循以下命令规则。如下:

  • 变量名中可以有数字(134),字母(abcd),下划线(_),美元符($).
  • 变量名中不能出现中文(不能使用中文)。
  • 变量名中不能包含空格(如:a  b   这种是错误的)。
  • 变量不能是JavaScript中的关键字,保留字(如:var var)。
  • 变量名不能以数字开头,如:(1abd  错误 )   (ab1  正确)。

        我们在定义变量的时候,要使变量有意义,这样更容易让他人看懂,如name就是名字意思我们可以使用这个变量来存储名字,不能是awe这样用这个来存储名字,这样虽然并无问题,但是别人看不明白你这玩意存的是啥。

定义变量:

在JavaScript中我们可以使用var关键字来定义变量,其语法格式如下:

 var 变量名;

如下几个例子:

var name;//定义了变量name
var age;//定义了变量age
var gender;//定义了变量gender

        定义变量时,可以一次定义几个变量,或者一次一个的定义(如上),如果一次要定义多个变量,那么变量名之间要使用逗号,进行分开,如下所示:

var name,age,gender;//一次性定义了多个变量

定义完变量后,如果没有赋值,那么变量的默认值会是undefined(未定义)。

为变量赋值:

        我们定义变量的时候,可以使用等于号=来给变量赋值,等号左边是变量的名字,等号右边是变量的值,如下所示:

var age=15;//定义了age变量,并赋予了初始值15

        我们定义完变量之后也可以使用=等于号来给变量赋值,等号左边是变量的名字,等号右边是变量的值,如下所示:

var age;//定义了变量age
age=20;//给变量age赋值20

变量提升:

        JavaScript在预编译期会先预先处理声明的变量,但是变量的赋值操作发生在JavaScript执行期,而不是预编译期。

document.write(name);//打印name变量里面的值
name = "wee";//给name变量赋予一个值:wee
document.write(name);//打印此时name变量里面的值
var name;//声明一个name变量

        在上述代码中我们把声明放在了最后面,而赋值操作放到了声明的前面,由于JavaScript在预编译期已经对变量声明语句进行了预解析,所以第一行代码使用变量的时候不会报错,而是因为没有初始化返回一个undefined。第三行是在赋值之后使用的,所以为wee

        JavaScript引擎的解析方式是:先解析代码,获取所有被声明的变量,然后再一行一行地运行。这样,所有声明的变量都会被提升到代码的头部,这就叫做变量提升(Hoisting).

let和const关键字:

        2015年以前,JavaScript只能通过var关键来声明变量,在ECMAScript6(ES6)发布之后,新增了letconst两个关键字来声明变量,其中:

  •  使用let关键字声明的变量只能在它所在的代码块中有效(类似局部变量),并且在这个代码块中,同名的变量不能重复声明。
if (2 == 2) {//判断为真就进入
    let age = 15;//定义了age这个变量 并赋值为15
    console.log(age)//打印age
    let age=23;//不能重复定义  所以报错
}
console.log(age)//打印 报错因为age是在if域里面的,在外面并没有age

重名报错。 

        如下运行结果:我们进入if的域中 定义了age变量,然后打印了age的值15,后面又在if域外面打印此时age只作用于if内所以打印报错。

 

  • const关键字的功能和let相同,但使用const关键字声明的变量还具备另外一个特点,那就是使用const关键字定义的变量,一旦定义好就不可以修改(使用const关键字定义的为常量)。
const time = 2011;
console.log(time)

time = 23;

 因为使用const定义的是常量,常量是不可以修改的量,所以修改时会报错。

JS数据类型:

前言:

        我们存储数据的时候一般有一个基本的类型,每种编程语言都有各自支持的数据类型,不同的数据类型可以存储不同的数据,如文本数字布尔值等等。

        在JavaScript我们定义数据的时候,不需要声明变量的类型,在JavaScript中变量的类型是相对于里面的类型来确定的,如下:

var age;//此时age的类型为undefined,因为没有任何东西
age=19;//此时类型为数值类型(Number)
age ="13";//此时为字符串类型(String)

在JavaScript里的数据可以分为两类:

  • 基本数据类型(值类型):字符串(String),数字(Number),布尔(Boolean),空(Null),未定义(Undefined),Symbol(表示一种独一无二的值);
  • 引用数据类型:对象(Object),数组(Array),函数(Function)。
typeof操作符:

        typeof操作符可以返回数据的类型,使用typeof操作符的时候可以带括号也可以不带括号。如下两种示例代码:

typeof arr;//获取arr的这个变量的数据类型
typeof(arr);//获取arr这个变量的数据类型

如果arr是一个对象那个运行结果如下所示:

JS基本数据类型:

String(字符串):

        在js中String是字符串类型它的数据常常使用一对单引号' '或者双引号" "包裹起来,如:'a',"arr".其中的引号并不是字符串的一部分。

        我们如果要在字符串里面加引号,就需要使用\来给引号进行转义,这样引号就会被判断为字符串的一部分了。代码示例如下:

var arr = "我并不会使用\"电脑";
var arr = "我并不会使用\'电脑";

上述代码的示例如下: 

 

Number(数值):

        number在js中是一种数字类型,在JavaScript并不区分整数根小数(浮点数),他们都是number类型,其示例代码如下:

var num1=5;//整数
var num2=5.134;//小数

        在js中number大小是有限的,他们的范围是:-(-2^{53}-1)到(2^{53}-1)之间的。 我们可以使用科学(指数)计数法来表示一个数字的大小,如下:

var y=123e5;//表示用123乘以10的5次方,就是12300000
var z=123e-5;//表示用123乘以10的-5次方,即0.00123

        在number中除了整数和小数还有一些其他的数值,如Infinity(表示正无穷大),-Infinity(表示负无穷大)还有NaN(表示无效或者未定义的数学运算结构,如0除0)。如果一个数值超过了number的范围那这个数值就会自动变为Infinity(正数超出)或者-Infinity(负数超出)。

        如下几个示例:其中第一个arr的值是无穷大减一还是无穷大,arr1的值使用了科学计数法也就是2乘以10的23523次方超出了范围也变成了无穷大,第三个是2乘以10的33次方并没有超出范围所以还是可以计算的。

Boolean(条件):

在js中我们可以使用boolean来存储真(True),假(False),常常使用在判断中,我们除了可以直接使用true或者false来定义真假外还可以使用一些表达式来得到布尔值。示例如下:

Null(空):

Null就是一个空值,不是那种没有定义他可以来定义空对象指针。我们还可以使用typeof来查看Null的类型,可以发现Object,说明Null是一个Object(对象)的一种值,所以我们可以通过将变量赋值为Null创建了一个空的对象。示例如下:

Undefined(未定义):

在js中我们如果没有给变量赋值那这个变量的值默认值就是undefined,如下:

var arr;
var arr1;

上述代码示例如下: 

Symbol(独一无二):

 在js中使用symbol来表示一种独一无二的值,我们使用Symbol()函数来生成,如下所示:

var arr=62;
var arr1=Symbol(arr);
var arr2=Symbol(arr);

上述代码的示例如下:第一块arr是一个整数62,后面我们定义arr1的时候使用了Symbol来定义,可以看到arr1是Symbol(62)它的类型可以在第5块中看到是symbol,后续我们使用arr1和arr2来对比因为他们都是独一无二的值所以他们对比的结果肯定是false。 

JS引用数据类型:

Object(对象):

在js中对象(Object)类型是一组由:组成的没有顺序的集合,定义对象的时候需要使用{}括号,语法如:{arr1:data1,arr2:data2,arr3:data3,......,arrN:dataN};对象类型的键他们都是字符串类型,而他们的值可以是任意的数据类型,如果我们要获取对象中某个值,我们可以使用对象名.键的形式,如下所示:

var object = {
    arr1: 23,
    arr2: 52.263,
    arr3: '一个字符串而已',
    arr4: true
}
var arr = [object.arr1, object.arr2, object.arr3, object.arr4]
console.log(arr);

上述代码的示例如下:

Array(数组):

数组是一堆数据的集合,它使用用一对[]括起来,里面的数据的值可以相同也可以不同,定义一个数组的时候我们需要在赋值的使用使用[]括号把数据包围起来并且里面的数据要使用逗号(英文状态下的逗号)分开如:arr=['字符串',253,false];其中第一个数据是字符串类型,第二个数据是数值类型,第三个数据是布尔类型。示例代码如下:

var arr=['字符串',5286,false];

使用数组的示例图如下: 

Function(函数):

在js中function(函数)是一段不会自动执行的代码段,定义了函数之后我们需要去调用定义的函数,函数里面的代码才会执行,函数示例代码如下:

var func = function (name) {
    document.write("在函数内部的" + name);
    return name;
}
var func1 = func(235);

函数的使用示例图:

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

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

相关文章

一二三应用开发平台使用手册——系统管理-用户组-使用说明

概述 在RBAC模型中,资源、角色、用户三个关键元素,构成权限体系。在平台设计和实现的时候,以下几个核心问题思考如下: 角色,单层平铺还是树形结构? 在小型应用中,角色数量有限的情况下&#x…

Gitea 简单介绍、用法以及使用注意事项!

Gitea 是一个轻量级的代码托管解决方案,它提供了一个简单而强大的平台,用于托管和协作开发项目。基于 Go 语言编写,与 GitLab 和 GitHub Enterprise 类似,但专为自托管而设计。以下是对 Gitea 的详细介绍,包括常用命令…

SpringBoot---------@Value,@ConfigurationProperyies以及多环境开发配置

application.yml server:port: 8080#logging: # level: # root: info(默认)array:name: zzlage: 18subject:- Java- Vue- SpringBoot Value注解的使用:从yml配置文件中获取数据,即可在类中使用 Value("${server.port}")private String port;Value(&q…

SpringBoot中Bean的创建过程及扩展操作点 @by_TWJ

目录 1. 类含义2. Bean创建过程 - 流程图3. 例子3.1. 可变属性注入到实体中3.2. 模拟Bean创建的例子 1. 类含义 BeanDefinition - 类定义,为Bean创建提供一些定义类的信息。实现类如下: RootBeanDefinition - 类定义信息,包含有父子关系的Be…

美国RAKSmart服务器性能科普

当我们谈论服务器性能时,无疑会涉及多个维度,包括存储能力、网络连接、稳定性、管理界面以及安全性等。在这篇科普文章中,我们将深入探讨美国RAKSmart服务器的性能特点。 首先,RAKSmart服务器在存储和扩展性方面表现出色。它们配备…

Git 工作原理

Git 工作原理 | CoderMast编程桅杆https://www.codermast.com/dev-tools/git/git-workspace-index-repo.html Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库 Git 一…

绿联 安装transmission

绿联 安装transmission及中文UI 1、镜像 linuxserver/transmission:latest 2、安装 2.1、创建容器 按需配置权重。 2.2、基础设置 2.3、网络 桥接即可。 注:如果使用IPV6,请选择"host"模式。 注:如果使用IPV6,请选…

网络数据包嗅探器工具

组织的网络非常庞大,包含服务器、交换机、路由器和接入点等众多节点,由于许多资源和流量不断通过这些节点,因此很难确定大量流量是真实的还是安全攻击的迹象,了解和了解组织的网络流量至关重要,一个有用的资源是网络数…

JAVA学习笔记31(IO流)

1.IO流 1.文件流 ​ *文件在程序中是以流的形式来操作的 2.常用文件操作 1.创建文件对象 1.new File(String pathname) //根据路径构建一个File对象 main() {}public void create01() {String filePath "e:\\news1.txt";File filePath new File(filePath);tr…

c++ 线性搜索与二分搜索

线性搜索 假设该项目以随机顺序存在于数组中,并且我们必须找到一个项目。那么搜索目标项目的唯一方法就是从第一个位置开始,并将其与目标进行比较。如果项目相同,我们将返回当前项目的位置。否则,我们将转移到下一个位置。…

HTML 中创建 WebSocket服务与接收webSocket发送内容

效果图 服务端 html客户端接受的消息 接下来开始实现服务端 创建server.js const WebSocket require(ws);const wss new WebSocket.Server({ port: 8877 });wss.on(connection, function connection(ws) {console.log(WebSocket connection opened.);// 每隔 5 秒发送一次…

NIO之ByteBuffer

NIO中的ByteBuffer是缓冲区,其中有几个比较重要的属性capacity,position和limit。 capacity: 其中,capacity是缓冲区的容量大小,在分配内存空间后不会改变。 limit: limit是限制位置,在读写模…

【MongoDB】数据的自动过期,TTL索引

文章目录 1. 前言2.概念与使用2.1.使用方式2.2.数组中包含日期字段2.3.设置具体的过期时间点2.4.额外的过滤条件 3.总结 1. 前言 在近期的工作中,使用了MongoDB来保存了一些日志数据,但是这些日志数据具有一定的时效性,也就是按照业务的需要…

活动回顾丨雀跃山城•2024重庆爱鸟周主题公益活动落地大坪大融城

重庆,这座美丽的山城,不仅有着独特的山水风光,更是众多鸟类栖息繁衍的家园。重庆将四月第一周定为“重庆爱鸟周”,为提高青少年珍稀动物保护意识,4月20日,大坪大融城携手传益千里开展雀跃山城?2024重庆爱鸟…

cox版本的Boruta+SHAP分析(心力衰竭数据集)

Cox版本的BorutaSHAP分析(心力衰竭数据集) Boruta算法是变量筛选的有力工具,而SHAP分析是观察预测变量与结局变量间关系的不错的方法,在传统的分析方法的基础上提供了一个全新的视角。Boruta算法SHAP分析,正在逐渐成为…

Python代码格式化工具Black介绍

Black 是一个 Python 代码格式化工具,以其简洁和一致的格式化风格而闻名。它被设计为一个“零妥协”的代码格式化程序,意味着它会自动地将代码格式化为一种统一的风格,而不需要用户进行任何配置。Black 严格遵循 PEP 8 -- Python 的官方编码风…

笔试狂刷--Day2(模拟高精度算法)

大家好,我是LvZi,今天带来笔试狂刷--Day2(模拟高精度算法) 一.二进制求和 题目链接:二进制求和 分析: 代码实现: class Solution {public String addBinary(String a, String b) {int c1 a.length() - 1, c2 b.length() - 1, t 0;StringBuffer ret new StringBuffer()…

甘特图:如何制定一个有效的产品运营规划?

做好一个产品的运营规划是一个复杂且系统的过程,涉及多个方面和阶段。以下是一些关键步骤和考虑因素,帮助你制定一个有效的产品运营规划: 1、明确产品定位和目标用户: 确定产品的核心功能、特点和优势,明确产品在市…

Ubuntu 22最新dockers部署redis哨兵模式,并整合spring boot和配置redisson详细记录(含spring boot项目包)

dockers部署redis哨兵模式,并整合spring boot 环境说明相关学习博客一、在docker中安装redis1、下载dockers镜像包和redis配置文件(主从一样)2、编辑配置文件3、启动redis(主从一样)4、进入容器测试(主从一…

快速上手Jemter分布式压测实战和代码详细解析

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…