2.3JS变量和数据类型m

article/2025/6/23 16:13:08

1.认识JS变量

变化数据的记录--变量

2.变量的命名格式

在JS中如何命名一个变量呢

  变量的声明:在JS中声明一个变量使用var关键字(variable单词的缩写)(后续学习ES6还有let、const声明方式)

  变量赋值:使用=给变量进行赋值

这个过程也可以分开操作:

同时声明多个变量:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>//定义一个变量// 第一步:变量的声明(告诉js引擎接下来我要定义一个变量)// var关键字// 第二部:变量的赋值(使用=赋值即可)// var curretnTime="16:00"// 其他的写法一:// var currentTime;// currentTime="16:02";// currentTime="17:40";// 其他写法二:同时声明多个变量(不推荐,阅读性比较差)// var name,age,height// name="chen"// age=22// height=170var name="chen",age=18,height=1.70//补充:// 1.当我们打印变量的时候,实际上是在打印变量中保存的值//2.console.log(参数1,参数2,参数3..............)console.log(name,age,height) </script>
</body>
</html>

变量命名规则:必须遵守 

1.第一个字符必须是一个字母、下划线(_)或一个美元符号($)

2.其他字符可以是字母、下划线、美元符号或数字

3.不能使用关键字和保留字命名

  什么是关键字,什么是保留字?

  关键字就是类似于var之类的。保留字是可能会变成关键字的

词法语法 - JavaScript | MDN (mozilla.org)https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar

4.变量严格区分大小写

变量命名规范:建议遵守

多个单词使用驼峰标识

赋值=两边都加上空格

一条语句结束后加上分号,也有很多人的习惯是不加

变量应给做到见明知意;

变量练习 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>// 练习一:定义一下变量,保存自己的个人信息var name="chen";var age=18;//练习二:定义一个变量name1,赋值成name2。var name2=10;var name1=name2;// 练习三:定义变量,保存两个数字,并且对两个变量的数字进行交换// 方式一:使用临时变量// var temp=a1;// var a1=a2;// var a2=temp;// 方式二:不使用临时变量var a1=3,a2=4;console.log("交换前a1,a2:",a1,a2)var a1=a1+a2;var a2=a1-a2;var a1=a1-a2;console.log("交换后aq,a2:",a1,a2)// 练习四:接受用户输入的一个值,并且使用一个变量来保存var inputinfo=prompt("请输入一个值")console.log(inputinfo)</script>
</body>
</html>

JS变量的注意事项:

注意一:如果一个变量未被声明(declaration)就直接使用,那么就会报错;

注意二:如果一个变量有声明,但是没有被赋值,那么默认值是undefined

注意三:如果没有使用var声明变量也可以,但是不推荐(事实上会被添加到window对象上)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>//注意事项一:如果一个变量未被声明就直接使用,那么会直接报错// window里面有一个默认的name变量var currentAge =ageconsole.log(message)// 注意事项二:如果一个变量有声明,但是没有赋值操作var info console.log(info)//注意事项三:在JS中也可以不适用var在全局声明一个变量(不推荐)//如果不使用var来声明一个变量,也是可以声明成功的,并且这个变量会被加入window对象address="河北"console.log(address)</script>
</body>
</html>

3.数据类型和typeof 

事实上数据类型是数据结构的封装

JavaScript中的具有特定的类型

例如,字符串或者数字

我们可以将值赋值给一个变量,那么这个变量就具备了特定的类型

一个变量可以在前一刻是一个字符串,下一刻就存储一个数字;

允许这种操作的编程语言,例如JavaScript,就被称为“动态类型”(dynamically typed)的编程语言;

这就意味着JS非常灵活,但是灵活也是一把双刃剑。

在JS种,有8种基本的数据类型(7种原始类型和1种复杂类型)

Number

String

Boolean

Undefined

Null

Object

Bigint(后续了解)

Symbol(后续了解) 

typeof是一个操作符,不是一个函数

因为ECMAScript的类型系统是松散的,所有需要一种手段来确定任意变量的数据类型

typeof操作符就是为此而生的

对一个值使用typeof操作符会返回下列字符串之一

undefined表示值未定义

boolean表示值为布尔值

string表示值为字符串

number表示值为数值

object表示值为对象(而不是函数)或者null

function表示值为函数

symbol表示值为符号

typeof()的用法

你可能还会遇到另一种语法:typeof(x)它与typeof x相同

typeof是一个操作符,并非是一个函数,()只是将后续的内容当成一个整体而已。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>var a="123"a=nulla=123a=trueconsole.log(typeof a)</script>
</body>
</html>

4.常见的数据类型 

4.1Number类型

number类型代表整数和浮点数

数字number可以有很多操作,比如,乘法*、除法/、加法+、减法-等等。

常见的运算符后续会有专门的讲解

除了常规的数字,还包括所谓的“特殊数值”(“special numeric values”)也属于Number类型

Infinity:代表数学概念中的无穷大,也可以表示成Infinity;

比如1/0得到的就是无穷大

NaN:NaN代表一个计算错误,它是一个错误的操作所得到的结果

比如字符串和一个数字相乘

在之前我们学习过进制的概念,数字类型也有其他的进制表示方法:

十进制、十六进制、二进制、八进制

数字表示的范围:

最小整数值:Number.MIN_VALUE,这个值为:5e-324,小于这个的数字会被转化成0

最大正数值:Number.MAX_VALUE,这个值为:1.7976931348623157e+308

    <script>// 1.整数和浮点数var age=18var height=1.70console.log(age,height)//2.特殊的数值// Infinityvar num1=Infinityvar num2=1/0console.log(num1,num2)//NaN:not a number(不是一个数字)var result =3*"abc"console.log(result)// 3.进制表示var num3=100  //十进制var num4=0x100var num5=0o100var num6=0b100console.log(num4,num5,num6)// 5.数字可以表示的范围var max=Number.MAX_VALUEvar min=Number.MIN_VALUEconsole.log(max,min)</script>

4.2String类型

在开发中我们经常会有一些文本需要表示,这个时候我们会使用字符串String;

比如人的名字、地址、简介等等

JS中的字符串必须被括在引号里,有三种包含字符串的方式

双引号:"Hello"

单引号:'Hello'

反引号:`Hello`(ES6之后)

前后的引号类型必须一致

如果在字符串里面本身包括单引号,可以使用双引号

如果在字符串里面本身包括双引号,可以使用单引号

字符串中的转义字符

除了普通的可以打印字符之外,一些有特殊功能的字符可以通过转义字符的形式放入字符串中 

字符串中的属性和方法

字符串还有很多细节和操作方法

这里我们先掌握几个基本的字符串使用操作

操作一:字符串拼接,通过+运算符(后续)

操作二:获取字符串长度 

    <script>// 1.String基本使用var name="abc"var address="广州市"var intro="性格决定一切"//2.别的引号的使用// 单引号var message1='Hello World'// 双引号var message2="Hello World"// 反引号(ES6新增语法)// ${变量/表达式}var message3=`Hello World, ${name}, ${2+3}`// 字符串本身中包含的引号var message4='my name is "chen"'var message5='my name \\ \'\' is "chen"'console.log(name,address,intro,message1,message2,message3,message4,message5)// 4.字符串本身有的方法和属性var message="Hello World"console.log(message.length)// 字符串操作var nickname="chen"var info="my name is"var infoStr=`my name is ${nickname}`var infoStr2=info+nicknameconsole.log(infoStr,infoStr2)</script>

4.3Boolean类型

 Boolean(布尔)类型用于表示真假

  比如是否毕业,是否有身份证,是否购买车票,是否成年人;

  比如开发中,我们会判断一个账号是否登录,是否是管理员,是否具备某个权限,是否拥有某个英雄,皮肤等;

布尔(英语Boolean)是计算机科学中的逻辑数据类型,以发明布尔代数的数学家乔治.布尔为名。

Boolean类型包含两个值,true和false

在后续的逻辑运算符中我们再详细学习

4.4Undefined类型

 Undefined类型只有一个值,就是特殊值undefined

如果我们声明一个变量,但是没有对其进行初始化时候,它默认就是undefined;

显示的声明为undefined也是一样的

这里有两个注意事项:

注意一:最好再变量定义的时候进行初始化,而不是只是声明一个变量;

注意二:不要显示的将一个变量赋值为undefined

  如果变量刚开始什么都没有,我们可以初始化为0、空字符串、null等值;

4.5Object类型 

Object类型是一个特殊的类型,我们通常把它称为引用类型或者复杂类型

其他的数据类型我们通常称为“原始类型”,因为它们的值是一个单独的内容(字符串、数字或者其他);

Object往往可以表示一组数据是其他数据的一个集合

再JS中我们可以使用花括号{}的方式来表示一个对象;

Object是对象的意思,后续我们会专门讲解面向对象的概念

4.6Null类型 

Null类型同样只有一个值,即特殊值null

null类型通常用来表示一个对象为空,所有通常我们再给一个对象进行初始化时,会赋值为null

null和undefined的关系

  undefined通常只有一个在变量声明但是未初始化的时候,它的默认值是undefined才会用到

  并且我们不推荐直接给一个变量赋值为undefined,所有很少主动来使用

  null值非常常用,当一个变量准备保存 一个对象,但是这个对象不确定的时候,我们可以先赋值为null

数据类型的总结

JS中有八种基本的数据类型(前七种为基本数据类型,也称为原始类型,而object为复杂数据类型,也称为引用类型

number:用于任何类型的数字:整数或者浮点数

string:用于字符串:一个字符串可以包含0个或者多个字符,所有没有单独的单字符类型

boolean:用于true和false

undefined:用于未初始化的值-----只有一个undefine值的独立类型

object:用于更负责的数据结构

null:用于未知的值---只有一个null的值的独立类型 

5.数据类型的转换 

在开发中,我们可能会在不同的数据类型之间进行某些操作

比如把一个String类型的数字和另外一个Number类型的数字进行运算

比如把一个String类型的文本和另外一个Number类型的数字进行相加;

比如把一个String类型或者Number类型的内容,当做一个Boolean类型来进行判断;

等等

也就是在开发中,我们会经常需要对数据类型进行转换

大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型,这是一种隐式转换

我们也可以,通过显示的方式来对数据类型进行转换

5.1字符串String的转换 

其他类型经常需要转换成字符串类型,比如和字符串拼接在一起或者使用字符串中的方法

转换方式一:隐式转换

 一个字符串和其他类型进行+操作

  如果+运算左右两边有一个是字符串,那么另一边会自动转换成字符串类型进行拼接;

某些函数的执行也会自动将参数转为字符串类型;

 比如console.log函数; 

转换方式二:显示转换

  调用String()函数

  调用toString()方法(后续面向对象再学习)

方法和函数的区别,我们后续在讲解面向对象的时候会讲到

    <script>var num1=123var age=18var isAdimin=true// 1.转换方式一:隐式转换(用的非常多)var num1Str=num1+""var ageStr=age+""var isAdiminStr=isAdimin+""console.log(typeof num1Str, typeof ageStr, typeof isAdiminStr)// 2.转换方式二:显示转换var num2Str=String(num1)console.log(typeof num2Str)</script>

5.2 数字类型Number的转换

其他类型也可能会转换成数字类型

转换方式一:隐式转换

 在算数运算中,通常会将其他类型转换成数字类型来进行运算

 比如“6”/“2”

但是如果是+运算,并且其中一边有字符串,那么还是按照字符串来连接的

转换方式二:显示转换

我们也可以使用Number()函数来进行显示转换

其他类型转换成数字的规则

值:undefined 转换后:NaN

null:0

true和false:1   0

string:去掉首位空格后的纯数字字符串中含有数字。如果剩余字符串为空,则转换结构为0.否则,将会从剩余的字符串中读取数字。当类型转换出现error时候返回NaN

    <script>// 方式一:隐式转换(用的少)var num1="8"var num2="4"var result1=num1+num2console.log(typeof result1)//数字类型隐式转换var result2=num1*num2console.log(result2)//结果是32//方式二:显示转换(Number())var result3=Number(num1)console.log(typeof result3)// 其他类型转换成数字的规则console.log(Number(undefined)) //Nanconsole.log(Number(null)) //0console.log(Number(true)) //1console.log(Number("fafa12")) //NaNconsole.log(Number("   123   ")) //123console.log(Number("")) //0</script>

5.3 布尔类型Booleam的转换

布尔(boolean)类型转换是最简单的

它发生在逻辑运算中,但是也可以通过调用Boolean(value)显示的进行转换

转换规则如下:

直观上为“空”的值(如0、空字符串、null、undefined和NaN)将变成false

其他的值变成true

注意:包含0的字符串“0”是true

一些编程语言(比如PHP)视“0”为false,但是在JS中,非空的字符串总是true

    <script>//方式一:隐式转换//分支语句var isAdmin=truevar num1=123//true//方式二:显示转换console.log(Boolean(num1),Boolean(undefined))//转换有如下的规则//直观上为空的值,转成Boolean类型都是false//直观上为空的值,0/“”/undefined/null/NaN  ---false//注意事项console.log(Boolean("")) //falseconsole.log(Boolean("0")) //true</script>


http://www.hkcw.cn/article/xAAvpUExkV.shtml

相关文章

深度学习总结(41)

微调预训练模型 另一种常用的模型复用方法是微调&#xff0c;如图所示&#xff0c;它与特征提取互为补充。微调是指&#xff0c;对于用于特征提取的已冻结模型基&#xff0c;将其顶部几层“解冻”​&#xff0c;并对这解冻的几层与新增加的部分&#xff08;本例中为全连接分类…

QT入门学习

一: 新建QT项目 二:QT文件构成 2.1 first.pro 项目管理文件&#xff0c;下面来看代码解析 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11TARGET main# The following define makes your compiler emit warnings if you use # any Qt feature …

kaggle 预测房价

利用简单的线性模型&#xff0c;训练kaggle 房屋数据集&#xff1a; import os import random import tarfile import time import zipfile import pandas as pd import requests import torch from torch import nn from torch.utils import data from matplotlib import pyp…

ASP.NET Core SignalR的基本使用

文章目录 前言一、SignalR是什么&#xff1f;在 ASP.NET Core 中的关键特性&#xff1a;SignalR 工作原理简图&#xff1a; 二、使用步骤1.创建ASP.NET Core web Api 项目2.添加 SignalR 包3.创建 SignalR Hub4.配置服务与中间件5.创建控制器(模拟服务器向客户端发送消息)6.创建…

AI书签管理工具开发全记录(七):页面编写与接口对接

文章目录 AI书签管理工具开发全记录&#xff08;七&#xff09;&#xff1a;页面编写与接口对接前言 &#x1f4dd;1. 页面功能规划 &#x1f4cc;2. 接口api编写 &#x1f4e1;2.1 创建.env,设置环境变量2.2 增加axios拦截器2.3 创建接口 2. 页面编写 &#x1f4c4;2.1 示例代…

“AI 编程三国杀” Google Jules, OpenAl Codex, Claude Code,人类开始沦为AI编程发展的瓶颈?

AI 编程三国杀:Google Jules, OpenAI Codex, Claude code “AI 编程三国杀”是一个形象的比喻,借指当前 AI 编程领域中几个主要参与者之间的激烈竞争与并存的局面。这其中,Google、OpenAI 以及 Anthropic (Claude 的开发者) 是重要的“国家”,而它们各自的 AI 编程工具则是…

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 文件事件处理部分)

分析客户端和服务端网络诵信交互实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 命令请求的执行过程案例分析介绍发送命令请求读取命令请求客户端状态的argv属性和argc属性命令执行器第…

第29次CCF计算机软件能力认证-3-LDAP

LDAP 刷新 时间限制&#xff1a; 10.0 秒 空间限制&#xff1a; 512 MiB 下载题目目录&#xff08;样例文件&#xff09; 题目背景 西西艾弗岛运营公司是一家负责维护和运营岛上基础设施的大型企业&#xff0c;拥有数千名员工。公司内有很多 IT 系统。 为了能够实现这些…

2025年- H63-Lc171--33.搜索旋转排序数组(2次二分查找,需二刷)--Java版

1.题目描述 2.思路 输入&#xff1a;旋转后的数组 nums&#xff0c;和一个整数 target 输出&#xff1a;target 在 nums 中的下标&#xff0c;如果不存在&#xff0c;返回 -1 限制&#xff1a;时间复杂度为 O(log n)&#xff0c;所以不能用遍历&#xff0c;必须使用 二分查找…

HomeKit 基本理解

概括 HomeKit 将用户的家庭自动化信息存储在数据库中&#xff0c;该数据库由苹果的内置iOS家庭应用程序、支持HomeKit的应用程序和其他开发人员的应用程序共享。所有这些应用程序都使用HomeKit框架作为对等程序访问数据库. Home 只是相当于 HomeKit 的表现层,其他应用在实现 …

秒杀系统—5.第二版升级优化的技术文档三

大纲 8.秒杀系统的秒杀库存服务实现 9.秒杀系统的秒杀抢购服务实现 10.秒杀系统的秒杀下单服务实现 11.秒杀系统的页面渲染服务实现 12.秒杀系统的页面发布服务实现 8.秒杀系统的秒杀库存服务实现 (1)秒杀商品的库存在Redis中的结构 (2)库存分片并同步到Redis的实现 (3…

尚硅谷-尚庭公寓知识点

文章目录 尚庭公寓知识点1、转换器(Converter)2、全局异常3、定时任务1. 核心步骤(1) 启用定时任务(2) 创建定时任务 2. Scheduled 参数详解3. Cron 表达式语法4. 配置线程池&#xff08;避免阻塞&#xff09;5. 动态控制任务&#xff08;高级用法&#xff09;6. 注意事项 4、M…

字符串~~~

字符串~~ KMP例题1.无线传输2.删除字符串3.二叉树中的链表 AC自动机Manacher例题 扩展KMP字符串哈希 KMP &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; 经典例题 https://leetcode.cn/problems/find-the-index-of-the-first-occurre…

WEB3——简易NFT铸造平台之nft.storage

&#x1f9e0; 1. nft.storage 是什么&#xff1f; https://nft.storage 是 一个免费的去中心化存储平台&#xff0c;由 Filecoin 背后的 Protocol Labs 推出。 它的作用是&#xff1a; ✅ 接收用户上传的文件&#xff08;图片、JSON 等&#xff09; ✅ 把它们永久存储到 IPFS…

MCP架构全解析:从核心原理到企业级实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…

注销微软账户

若你需要注销微软账号&#xff0c;请点击下方超链接。 点击此处

华为OD机试真题——生成哈夫曼树(2025A卷:100分)Java/python/JavaScript/C/C++/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《生成…

Python实现P-PSO优化算法优化BP神经网络分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能技术的快速发展&#xff0c;神经网络在分类任务中展现了强大的性能。BP&#xff08;Back Propagation&…

学习海康VisionMaster之表面缺陷滤波

一&#xff1a;进一步学习了 今天学习下VisionMaster中的表面缺陷滤波&#xff1a;简单、无纹理背景的表面缺陷检测&#xff0c;可以检测表面的异物&#xff0c;缺陷&#xff0c;划伤等 二&#xff1a;开始学习 1&#xff1a;什么表面缺陷滤波&#xff1f; 表面缺陷滤波的核心…

34.x64汇编写法(一)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;33.第二阶段x64游戏实战-InLineHook 首先打开 Visual Studio&#xff0c;然后创…