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这个变量 并赋值为15console.log(age)//打印agelet 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.mzph.cn/news/826904.shtml

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

相关文章

RK3588 Android13 鼠标风格自定义动态切换

前言 电视产品,客户提供了三套鼠标图标过来,要求替换系统中原有丑陋风格且要支持动态切换, 并且在 TvSetting 中要有菜单,客户说啥就是啥呗,开整。 效果图 test framework 部分修改文件清单 png 为鼠标风格资源图片,这里就不提供了,可自由找一个替换一下就行 framew…

渐进时间复杂度O(n)

基本操作数 算法的运行速度受计算机性能的影响,所以通常考虑算法效率的不是算法运行的实际用时,而是算法运行所需要进行的基本操作的数量。 像加减乘除、访问变量、给变量赋值等都可以看作基本操作。对基本操作的计数或是估测可以作为评判算法用时的指标…

Python turtle海龟绘制美国队长盾牌

使用Python中的turtle模块绘制美队盾牌 具体思路如下: 导入海龟库第1个圆:半径 200,红色填充第2个圆:半径 150,白色填充第3个圆:半径 100,红色填充第4个圆:半径 50,蓝色…

CSS基础常用属性之字体属性(如果想知道CSS的字体属性知识点,那么只看这一篇就足够了!)

前言:在我们学习CSS的时候,主要学习选择器和常用的属性,而这篇文章讲解的就是最基础的属性之一——文字属性。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 废话不多说,让我们直…

【C++】C++11 包装器

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 function包装器 fu…

RHCE:网络服务综合项目

基础配置: 1.配置主机名,静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com进行时间同步 5.服务器之间实现SSH免密登录 业务需求: 1.Server-NFS-DNS主机配置NFS服务器,将博客网…

【Lattice FPGA 开发】Modelsim与Diamond联合仿真

本文讲解Modelsim与Diamond进行联合仿真步骤,以及对遇到问题的解决与说明。 文章目录 软件版本0. Diamond设置文件为仿真文件特别注意 1. Diamond设置仿真软件为Modelsim2. Modelsim编译Lattice的库文件2.1 新建文件夹存放库文件2.2 Modelsim中建立新的仿真库2.2.1…

千锤百炼之算法Scanner和System.out引起超时解决办法

题外话 觉得这个内容还是很关键的,过来写一下吧 本次内容有点抽象大家试着听一下 正题 做过算法题的人都知道,无论是在力扣还是牛客或者别的网站刷题,很多情况下都会遇到输入输出的情况,当我们用Scanner和System.out.print()就有可能产生超时问题 如下图 接下来会有一段代…

远程计算机或设备将不接受连接_解决方法

重启了下电脑遇到了无法联网的问题,解决方法如下: 打开“控制面板”; 打开Internet选项; 点击“连接”; 点击“局域网设置”; 设置选项为下图: 连接成功了: 原因: 打…

数字化到底具有何种魔力!成为跟上时代的必经之路?

数字化确实具有深远的魔力和吸引力,成为现代企业在跟上时代步伐、实现持续发展和创新的重要驱动力。相较于传统信息化,数字化转型能够为企业带来更为显著和全面的降本增效效应。 首先,数字化转型通过深度融合信息技术和管理标准化&#xff0c…

GPU版本torch使用教程

GPU版本torch使用教程 一、下载配置CUDA和CUDNN (1)进入cmd使用nvidia-smi.exe查看自己电脑支持的最新CUDA版本(可以下载地低版本),如图: 也可以通过NVIDIA控制面板(NVIDIA Control Panel&am…

HTML重要标签梳理学习

1、HTML文件的框架 使用VS Code编码时&#xff0c;输入!选中第一个&#xff01;就可以快速生成一个HTML文件框架。 2、标签 <hr> <!--下划线--> <br> <!--换行--> <strong>加粗</strong> &…

C++11——线程库的理解与使用

目录 前言 一、线程库的构造 1.默认构造 2.带参构造 3.拷贝构造与赋值拷贝&#xff08;不支持&#xff09; 4.移动构造 二、线程调用lambda函数 三、线程安全与锁 1.lambda中的线程与锁 2.函数指针中的线程与锁 3.trylock() 4.recursive_mutex 5.lock_gurad守卫锁…

JAVA-服务器搭建-创建web后端项目

首先打开IDEA 点击新建项目 写好名称-模板选择 Web应用程序 -语言选择 Java 构建系统选择 Maven 然后点击下一步 选择版本-选择依赖项 Web Profile 点击创建 点击当前文件-选择编辑配置 选择左上角的加号-选择Tomcat服务器-选择本地 点击配置-选择到Tomcat目录-点击确定 起个…

利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 上一篇使用STM32F407的HAL库只需1行代码实现US…

云仓酒庄广西发布会盛启:新老经销商欢聚南宁

原标题&#xff1a;云仓酒庄广西发布会盛启&#xff1a;新老经销商欢聚南宁&#xff0c;共襄精酿啤酒盛宴在夏日的热情与激情中&#xff0c;云仓广西发布会于今日在美丽的南宁盛大开幕。来自各地的经销商们齐聚一堂&#xff0c;共同见证了这一盛况。此次发布会不仅是一次产品的…

2024年汉字小达人活动还有5个月开赛:来做18道历年选择题备考吧

现在距离2024年第11届汉字小达人比赛还有五个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#x…

数电期末复习(一)数制和码制

数制和码制 1.1 概述1.2 几种常用的数制1.2.1 十进制&#xff08;Decimal&#xff09;1.2.2 二进制&#xff08;Binary&#xff09;1.2.3 二-十进制之间的转换1.2.4 十六进制和八进制1.2.5 任意进制之间的转换 1.3 二进制代码1.3.1 二-十进制码(BCD Binary Coded Decimal)1.3.2…

2023年网络安全行业:机遇与挑战并存

2023年全球网络安全人才概况 根据ISC2的《2023年全球网络安全人才调查报告》&#xff0c;全球的网络安全专业人才数量达到了550万&#xff0c;同比增长了8.7%。然而&#xff0c;这一年也见证了网络安全人才短缺达到了历史新高&#xff0c;缺口数量接近400万。尤其是亚太地区&am…

ARM_day6:实现字符串数据收发函数的封装

程序代码&#xff1a; uart4.h&#xff1a; #ifndef __UART4_H__ #define __UART4_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h" #include"stm32mp1xx_uart.h" void uart4_config(); void putchar(char dat); char getchar();…