JavaScript变量及数据类型

news2024/11/18 8:51:08

目录

概述:

变量:

前言:

变量的命名:

定义变量:

为变量赋值:

变量提升:

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

函数的使用示例图:

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

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

相关文章

vite(vue3)配置内网ip访问的方法步骤

如果没有进行配置,运行项目之后,看到的访问地址是本地访问地址,其他人访问不了。 如下: 一、配置 “ vite.config.ts ” 文件 server: {host: 0.0.0.0 }, 如图所示: 添加 server 配置后保存 “ vite.config.ts ” 文…

adb工具使用

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

银河麒麟安装OpenJDK

# 更新软件包列表(根据系统的实际情况,可能不需要这一步) sudo apt-get update # 安装OpenJDK sudo apt-get install openjdk-8-jdk

【JAVA面试题】探索多线程同步:ReentrantLock与synchronized的对比解析

程序员如何搞副业? 文章目录 程序员如何搞副业?强烈推荐引言:ReentrantLock介绍可重入性(Reentrancy):公平性(Fairness):条件变量(Condition)&…

Flume在大数据集群下的配置以及监控工具Ganglia的部署安装

前提:需要有三台虚拟机(hadoop102,103,104)配置好相关基础环境 安装 将安装包上传到/opt/software中 tar -zxf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/修改 apache-flume-1.9.0-bin 的名称为 flume mv /opt/module/…

交易猫、闲鱼、转转圈号客服台V4-V5源码

新增转转订单客服、闲鱼。各种反炸客服,更换了UI!

RAG技术从入门到精通

LLM之RAG技术从入门到精通 RAG技术介绍诞生背景定义 RAG与微调RAG流程架构RAG三种范式Naive RAGAdvanced RAG预检索过程嵌入后期检索过程RAG管道优化 Modular RAG RAG工作流程企业知识问答知识库RAG评估评价方法独立评估端到端评估 关键指标和能力 RAG优化RAG在企业知识库应用下…

OpenHarmony多媒体-mp3agic

简介 mp3agic 用于读取 mp3 文件和读取/操作 ID3 标签(ID3v1 和 ID3v2.2 到 ID3v2.4),协助开发者处理繁琐的文件操作相关,多用于操作文件场景的业务应用。 效果展示: 下载安装 ohpm install ohos/mp3agicOpenHarmony ohpm环境配…

MySQL的事务相关的语句的使用

MySQL的事务相关的语句的使用 事务是数据库管理系统执行过程中的一个程序单位,由一个或多个数据库操作组成。MySQL作为一款流行的关系型数据库管理系统,支持事务处理,允许用户定义一系列的操作,这些操作要么完全执行,…

西安大秦时代

西安大秦时代 大秦软件 公司简介 about us 西安大秦时代是技术型公司,技术领先是我们赖以生存的 基础!服务是技术的延续,让客户满意,是我们服务的目 标,也是公司的生存之本! 产品服务 西安大秦时代拥有…

【面试经典 150 | 数组】最后一个单词的长度

文章目录 写在前面Tag题目来源解题思路方法一:遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

Hdu1068 Girls and Boys【二分图最大独立集】

Girls and Boys 题意 有 n n n 个学生,每个学生可能和若干个其他异性学生有过恋爱关系 现在要选择一些学生形成集合,使得集合内任意两个学生之间都没有过恋爱关系 思路 把学生抽象成点,恋爱关系抽象成边,题意即是求&#xff1…

ASP.NET基于WEB的选课系统

摘要 设计本系统的目的是对选课信息进行管理。学生选课系统维护模块主要完成的是系统管理与维护功能。课题研究过程中,首先对系统管理模块进行了详尽的需求分析,经分析得到系统管理模块主要完成如下的功能:用户基本信息、选课信息的录入,查看…

腾讯云优惠服务器购买攻略,想省钱,看这篇文章就够了

购买腾讯云服务器省钱攻略,先搞个腾讯云新用户身份,然后先领取云服务器优惠代金券,最后在腾讯云官方特价活动上下单购买。目前腾讯云服务器优惠价格61元一年、新老同享2核2G4M带宽99元一年、2核4G5M服务器165元一年、4核8G服务器646元15个月&…

基于Vue3的openlayers地图显示

基于Vue3的openlayers地图显示 (1)接着上一篇将讲,在components文件夹下创建BaseMap.vue文件夹 (2)在App.vue文件里面引入BaseMap.vue文件,如下代码所示: (3)在BaseMa…

upload-labs第十七十八关

第十七关 $is_upload false; $msg null;if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_name $_FILES[upload_file][name];$temp_file $_FILES[upload_file][tmp_name];$file_ext substr($file_name,strrpos($file_name,".")1);$upload_file …

上位机图像处理和嵌入式模块部署(树莓派4b进行驱动的编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写,这是我没有想到的。这里驱动,更多的是一种框架的编写,不一定是编写真正的驱…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能,为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色,以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…

opencv的cmake报错

opencv编译报错 CMakeDownloadLog.txt #use_cache "D:/opencv/.cache" #do_unpack "ippicv_2021.8_win_intel64_20230330_general.zip" "71e4f58de939f0348ec7fb58ffb17dbf" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/1…

【Linux系统编程】第六弹---权限的概念

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是权限 2、权限的本质 3、Linux中的用户 4、Linux中文件的权限 4.1、文件访问者的分类(角色) 4.2、文件类型和访问权…