前端基础之JavaScript学习——变量、数据类型、类型转换
大家好,我是来自CSDN的博主PleaSure乐事,今天我们开始有关JS的学习,希望有所帮助并巩固有关前端的知识。
我使用的编译器为vscode,浏览器使用为谷歌浏览器,使用webstorm或其他环境效果几乎一样,使用系统自带的默认浏览器效果可能会有偏差,但是问题不大,都可以使用。
目录
JavaScript介绍
JS简介
JS书写位置
内部JS
外部JS
JS注释
结束符
输入输出语法
输出
document.write
编辑
console.log
alert
输入
字面量
JavaScript变量
定义
基本使用
变量的声明
变量的赋值
变量的更新与变量值的交换
命名规则与规范
规则
规范
let和var关键字的区别
作用域
变量提升
重复声明
全局属性
JavaScript数组
JavaScript常量
JavaScript数据类型
基本数据类型
number数字类型
string字符串类型
字符串基本定义
字符串拼接
boolean布尔型
undefined未定义型
null空类型
复杂数据类型
JavaScript类型转换
隐式转换
编辑
显示转换
结语
JavaScript介绍
JS简介
JS是一种客户端(浏览器)编程语言,主要用于监听、表单验证、数据交互、服务端编程(node.js)等方面,由ECMAScript和Web APIs两部分组成,其中Web APIs包含DOM文档操作和BOM操作浏览器两方面。
JS书写位置
内部JS
内部JS主要写在body内,但是要在</body>上方,即整个body最后,目的是为了操作上面的html元素。内部JS的主要书写方法如下:
<!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><h1>PleaSure乐事</h1><script>alert('我是来自CSDN的PleaSure 希望我的博客对你有帮助')</script>
</body>
</html>
作为内部JS,也可以直接在html按键中直接书写需要的JS代码,但是注意在vue中会使用这样的方法,尽量避免使用这样的写法,例如:
<button onclick="alert('hello world')">点击生效</button>
外部JS
外部JS是在目标html文件外部建立一个以.js结尾的文件,并在目标html文件中在script中使用其路径进行引入,在.js文件中直接写需要的js内容。 但是一定要注意的是在引用需要的js文件后<script></script>中不能写其他的代码,否则会自动忽略。 例如:
//test.html
<body><h1>PleaSure乐事</h1><script src="test.js"></script>
</body>//test.js
alert('我是来自CSDN的PleaSure 希望我的博客对你有帮助')
JS注释
JS的注释和C++、Java等类似,也分为单行注释和块注释两类,书写格式同样为两个左斜杆和斜杠+星号比如:
//注释
/*注释*/
结束符
CSS中需要「封号」来判断结束,但是JS中可以不写,一般跟着团队需求和开发规范来写。
输入输出语法
输出
document.write
输出语法的第一个为document.write,可以结合h1等标签进行书写。具体使用方法如下:
<body><h1>PleaSure乐事</h1><script>document.write('小黑子')</script>
</body>
console.log
第二种输出语法是console.log控制台输出,主要供程序员调试时使用,在页面当中不显示,但是控制台中会出现。控制台的调用方法为右键浏览器-检查页面元素即可调出。
alert
第三种输出方式则为使用页面弹出警示框alert(同内部JS中出现的alert) ,即为在用户进行操作前会进行提示。这一个输出已经在上面的JS书写位置部分已经讲解,就不再阐述。
输入
在JS当中,输入主要就一种:prompt,可以由此获得用户输入的内容。其中prompt括号中的前半部分应当输入提示信息,后半部分输入“输入框”中的默认信息。代码及效果如下:
<body><script>var userInput = prompt("请输入你的请求", "学费了");if (userInput != "学费了") {document.write("你输入的请求是:" + userInput);}else{document.write("已学费,还要努力");}</script>
</body>
PS:这里如果输入其他内容,则会输出if语句当中的内容,这里就不再做展示。
字面量
在JS当中字面量是一种表示特定值的语法形式,它直接在源代码中表示数据本身。字面量不是变量,而是在代码中直接写出的实际数据。当你读取或编写代码时,你看到的就是它的实际值,即“所见即所得”。JS当中的字面量主要包含以下几种:
- 数字字面量:直接写出数字,可以是整数或浮点数。例如:114514,
3.14
。 - 字符串字面量:由引号包围的一系列字符,可以使用单引号或双引号。例如:
'hello'
,"world"
。 - 布尔字面量:只有两个可能的值,
true
或false
。 - 空字面量:
null
表示一个空值或不存在的对象引用。 - 未定义字面量:
undefined
表示一个变量已经被声明,但是还没有被赋值。 - 对象字面量:使用大括号
{}
包围的一组键值对。例如:{key: 'value'}
。 - 数组字面量:使用方括号
[]
包围的一系列值。例如:[1, 2, 3]
。 - 模板字面量:使用反引号
`
包围的字符串,可以嵌入变量和表达式。例如:`Hello, ${name}!`
。 - 正则表达式字面量:由斜杠
/
包围的模式,用于字符串匹配。例如:/abc/gi
。
JavaScript变量
定义
变量是存储数据的容器,当不是数据本身。本质是程序在内存中申请的一块用来存储数据的小空间。需要注意的是如果变量过大或者其他情况可能会导致内存溢出的情况。
基本使用
变量的声明
变量的声明由两部分构成:声明关键字和变量名(也称标识)。声明的关键字为let,即提供的声明变量的词语。语法为:关键字+变量,例:let xiaoheizi。可以在一句let语句中同时定义多个变量,例如let age,name…… 。不过为了更好的可读性,一般分开写,不写在同一行。
变量的赋值
赋值与Java等一致,可以使用alert或者documen.write在页面中进行输出。注意,变量在声明的时候可以直接赋值(即初始化)。
<body><script>let ageage = 18document.write(age)</script>
</body>
也可以和上面的prompt一起使用。
变量的更新与变量值的交换
变量可以重新进行赋值,但是不可以重复定义。
多个变量可以使用一个中间变量进行交换,冒泡排序就是基于中间变量进行交换的。
命名规则与规范
规则
变量命名不能使用关键字如var,let等作为变量名,只能使用下划线,数字等,且数字不能打头,并严格区分大小写。
规范
变量命名应当做到命名有意义,见名知其意,并使用驼峰命名,比如使用pleaSureCsdn就是一个典型的驼峰命名,且见名知意。
let和var关键字的区别
作用域
声明的变量具有函数作用域。在一个函数内部使用 var
声明一个变量,那么这个变量在整个函数体中都可见。如果在全局作用域中声明,那么它将成为一个全局变量。
let
声明的变量具有块作用域。这意味着在 { }
内部声明的变量只在该代码块内可见。
变量提升
var
声明的变量会被提升至作用域的顶部,即我们可以在声明之前访问这些变量,虽然其值会是 undefined
。
let
声明的变量不会被提升。在声明之前访问这些变量会导致一个引用错误。
重复声明
var
允许在同一作用域内重复声明同一个变量名,后面的声明会覆盖前面的声明。
let
不允许在同一个作用域内重复声明同一个变量名。尝试这样做会抛出一个语法错误。
全局属性
当你在全局作用域中使用 var
声明变量时,该变量会自动成为 window
对象的一个属性。
使用 let
声明的变量不会成为 window
对象的属性,即使它是在全局作用域中声明的。
JavaScript数组
数组就是数据的组合,将一组数据存储在单个变量名下。声明方式为:关键字let 数组名arr = 数组字面量[] 也可以用new array构造函数声明。
数组中每个数据按照顺序保存,都有编号(也称为索引号、下标),从0开始,和Java、C++等相似,但是不同的地方是,在JavaScript当中数组可以存储不同类型数据,即在同一个数组当中存储整数,字符串等。
<script>let age = [114514,123123,145678];let name = ["jack","tom","lily"];console.log(age);console.log(name);document.write(age);document.write("<br>");document.write(name);
</script>
JavaScript常量
JS当中使用const声明的变量叫常量。
声明方式:关键字const 变量名 = 数值 例:const PI = 3.1415926
使用场景:某个变量永远不会改变,使用const定义,不用let或var定义。需要特别注意的是const定义的时候一定要初始化,切不可修改,用let定义的时候可以先不赋值。
JavaScript数据类型
JavaScript中的数据类型都是弱数据类型,赋值后才知道它的数据类型。强数据类型就是赋值之前就已经知道类型,比如Java中会先用int定义一个变量名,此时我们已经知道了数据类型,那么就知道该变量的类型就称为强数据类型。PS:需要留意undefined和null二者的区别。
基本数据类型
number数字类型
该类型包含整数、浮点数(小数),可以进行加减乘除这四种基本的运算,以及取模运算。但是需要注意运算之间的需要注意优先级。
此时我们引入一个概念:NaN。NaN代表一个计算错误,表示一个不正确为未被定义的数学操作的到的结果。NaN是粘性的,任何跟NaN的操作都会返回NaN。就像以下输出都会是NaN:
let result = Number("Hello World");
console.log(result);
let result = 0 / 0;
console.log(result);
let result = Infinity - Infinity;
console.log(result);
let result = "123abc" * 2;
console.log(result);
string字符串类型
字符串基本定义
字符串常用单引号、双引号、反引号套起来使用,单引号和双引号基本没有区别,一般推荐使用单引号,引号中没有内容就称为空字符串,但是需要注意哪怕只有一个空格都不是空字符串。
<script>let name = 'jack'let age = 18let gender = '男'let hobby = ['唱','跳','rap','篮球']let phone = '123456'
</script>
单双引号可以相互嵌套,外单内双或者外双内单,必要时可以使用转义符\来输出单双引号
字符串拼接
字符串拼接可以直接用加号进行,比如数字字符拼接 ‘giegie’ + 18 + ’nb‘、字符相连:‘哥哥’ + ‘giegie’。另外还有一种字符串叫模版字符串,即外面用反引号包裹,里面用${变量名}替代,可以参考python中的输出形式 例:document.write(‘我今年${age}了’}。
<script>let name = "PleaSure";let age = 30;let greeting = `Hello, my name is ${name} and I am ${age} years old.`;console.log(greeting);
</script>
boolean布尔型
只有两个固定的值:true和false
undefined未定义型
表示未赋值的变量,即已经定义了变量,但是还没有初始化。
null空类型
表示赋值了,但内容为空,即一个尚未创建的对象,已经创建了一个对象,但是还处于没准备好的阶段
复杂数据类型
复杂数据类型也常被称为复合数据类型或引用数据类型,是指那些由简单数据类型(原始类型)组合而成的数据结构。这些类型通常需要更多的内存空间,并且它们的值存储在堆内存中,而变量本身只存储指向这些值的引用(指针)。当变量被赋值为复杂数据类型时,实际上存储的是指向数据所在位置的内存地址,而非数据本身
主要包含数组、对象、函数、Map和Set、TypedArray 和 DataView等。
JavaScript类型转换
JS当中的转换原因:表单、prompt获得的数据默认为字符串而非其他类型,故不能直接进行相加 所以我们需要把数据类型进行类型转换后再进行我们需要的操作。
隐式转换
隐式转换是系统内部自动进行类型转换,如果+号两边只要有一个字符串们就会把另一个也转换成字符串 但是除了+意外,-*/都自动转换为数字类型。
<script>console.log(1 + 1)console.log(1 + 'pleasure')console.log(1 + 2)console.log(1 + '2')console.log(1 - 2)console.log(1 - '2')console.log(+12)console.log(+'12')
</script>
显示转换
由于隐式转换的逻辑不严谨而且过于依赖经验,所以需要显示转化来转化为我们需要的类型。
对于数字型,可以直接用Number类型转化为数字类型,例:Number(目标) 。特例:NaN也是数字类型,代表非数字。
可以用parseInt只保留整数。例:parseInt(目标)。
可以用parseFloat保留小数 例:parseFloat(目标)
结语
今天对JavaScript进行了一定介绍,并对变量、数组、常量、数据类型、类型转换等进行了学习,并与大家分享,希望对大家有帮助。
如果对您有帮助,希望您可以为我留下点赞、评论、收藏或关注,这对我真的很重要,非常感谢!
相关文章:

前端基础之JavaScript学习——变量、数据类型、类型转换
大家好,我是来自CSDN的博主PleaSure乐事,今天我们开始有关JS的学习,希望有所帮助并巩固有关前端的知识。 我使用的编译器为vscode,浏览器使用为谷歌浏览器,使用webstorm或其他环境效果几乎一样,使用系统自…...

SQL常用数据过滤---IN操作符
在SQL中,IN操作符常用于过滤数据,允许在WHERE子句中指定多个可能的值。如果列中的值匹配IN操作符后面括号中的任何一个值,那么该行就会被选中。 以下是使用IN操作符的基本语法: SELECT column1, column2, ... FROM table_name WH…...

HDFS和FDFS
HDFS(Hadoop Distributed File System)和FDFS(FastDFS)是两种不同的分布式文件系统,它们各自有不同的设计目标和使用场景。以下是对它们的详细介绍: HDFS(Hadoop Distributed File System&…...

Flutter对接FlutterBugly 报错Zone mismatch
在Flutter对接FutterBlugy时报如下错误: Unhandled Exception: Zone mismatch. E/flutter ( 1292): The Flutter bindings were initialized in a different zone than is now being used. This will likely cause confusion and bugs...

Docker缩小镜像体积与搭建LNMP架构
镜像加速地址 {"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live"] } daemon.json 配置文件里面 bip 配置项中可以配置docker 的网段 {"graph": "/data/docker", #数据目录࿰…...

六边形动态特效404单页HTML源码
源码介绍 动态悬浮的六边形,旁边404文字以及跳转按钮,整体看着像科技二次元画风,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head…...

BGP路径属性
路径属性分类 1. 公认属性(所有 BGP 路由器都能识别) (1) 公认必遵 a) AS path b)Origin c) Next hop (2) 公认任意 a) local preference b)atomic aggregate 2. 可选属性(…...

从零开始学量化~Ptrade使用教程(六)——盘后定价交易、港股通与债券通用质押式回购
盘后固定价交易 实现科创板、创业板的盘后固定价交易,界面如下显示: 交易 输入科创板或创业板代码,选择委托方向,输入委托价格、委托数量,点击“买入”或“卖出”按钮进行委托。可出现一个委托提示框提示是否继续委托操…...

Docker 三剑客
文章目录 Docker 三剑客1. Docker Engine功能与特点:工作原理:示例命令: 2. Docker Compose功能与特点:工作原理:示例文件 (docker-compose.yml):示例命令: 3. Docker Swarm功能与特点ÿ…...

每天一个数据分析题(四百三十一)- 卡方检验
在列联表分析中,下列不能用卡方检验的是() A. 多个构成的比较 B. 多个率的比较 C. 多个均值的比较 D. 以上都不是 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖…...

Flowable-流程图标与流程演示
BPMN 2.0是业务流程建模符号2.0的缩写。它由Business Process Management Initiative这个非营利协会创建并不断发展。作为一种标识,BPMN 2.0是使用一些符号来明确业务流程设计流程图的一整套符号规范,它能增进业务建模时的沟通效率。目前BPMN2.0是最新的…...

MyBatis源码中的设计模式2
组合模式的应用 组合模式介绍 组合模式(Composite Pattern) 的定义是:将对象组合成树形结构以表示整体和部分的层次结构。组合模式可以让用户统一对待单个对象和对象的组合。 比如:Windows操作系统中的目录结构,通过tree命令实现树形结构展…...

AI发展中的伦理挑战与应对策略
AI发展中的伦理挑战与应对策略 人工智能(AI)的快速发展在为社会带来许多便利和创新的同时,也带来了诸多伦理挑战。这些挑战主要集中在数据隐私侵犯、信息茧房的制造、歧视性算法、深度伪造技术等方面。针对这些问题,需要从多个层…...

基于用户非兴趣/非偏好/非习惯的推荐
基于用户非兴趣、非偏好、非习惯的推荐是一种个性化推荐技术,旨在为用户提供与其日常行为和兴趣模式不同的推荐内容。这种推荐方法的目的是打破用户的信息过滤和习惯,发现新的、潜在的兴趣点,从而提供更广泛和多样化的推荐结果。 通过收集和分…...

Abaqus基于CT断层扫描的三维重建插件CT2Model 3D
插件介绍 AbyssFish CT2Model 3D V1.0 插件可将采用X射线等方法获取的计算机断层扫描(CT)图像在Abaqus有限元软件内进行三维重建,进而高效获取可供模拟分析的有限元模型。插件可用于医学影像三维重构、混凝土细观三维重建、岩心数字化等领域…...

Mindspore框架CycleGAN模型实现图像风格迁移|(三)损失函数计算
Mindspore框架:CycleGAN模型实现图像风格迁移算法 Mindspore框架CycleGAN模型实现图像风格迁移|(一)CycleGAN神经网络模型构建 Mindspore框架CycleGAN模型实现图像风格迁移|(二)实例数据集(苹果2橘子&…...

ENSP中VLAN的设置
VLAN的详细介绍 VLAN(Virtual Local Area Network)即虚拟局域网,是一种将一个物理的局域网在逻辑上划分成多个广播域的技术。 以下是关于 VLAN 的一些详细介绍: 一、基本概念 1. 作用: - 隔离广播域:…...

《后端程序员 · Nacos 常见配置 · 第一弹》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...

深入解析HTTPS与HTTP
在当今数字化时代,网络安全已成为社会各界关注的焦点。随着互联网技术的飞速发展,个人和企业的数据安全问题日益凸显。在此背景下,HTTPS作为一种更加安全的通信协议,逐渐取代了传统的HTTP协议,成为保护网络安全的重要屏…...

vue3+TS从0到1手撸后台管理系统
1.路由配置 1.1路由组件的雏形 src\views\home\index.vue(以home组件为例) 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } from vue-router import …...

黑马头条-环境搭建、SpringCloud
一、项目介绍 1. 项目背景介绍 项目概述 类似于今日头条,是一个新闻资讯类项目。 随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客…...

基于centos2009搭建openstack-t版-ovs网络-脚本运行
openstackT版脚本 环境变量ip初始化 controlleriaas-pre.shiaas-install-mysql.shiaas-install-keystone.shiaas-install-glance.shiaas-install-placement.shiaas-install-nova-controller.shiaas-install-neutron-controller.shiaas-install-dashboard.sh computeiaas-instal…...

buuctf-web
查看后端源码 得到base64编码,解码得flag...

UBUNTU22 安装QT5.15.2 记录
安装QT预置安装软件包 sudo apt install gcc sudo apt install g sudo apt install clang sudo apt install clang sudo apt install make sudo snap install cmake --classic sudo apt-get install build-essential sudo apt install libxcb-xinerama0 #安装OpenGL核心库 su…...

C++基础知识:C++内存分区模型,全局变量和静态变量以及常量,常量区,字符串常量和其他常量,栈区,堆区,代码区和全局区
1.C内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的(在编译器中所书写的代码都会存放在这个空间。) 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分…...

MySQL面试题-重难点
mysql中有哪些锁?举出所有例子,各个锁的作用是什么?区别是什么? 共享锁:也叫读锁,简称S锁,在事务要读取一条记录时,先获取该记录的S锁,别的事务也可以继续获取该记录的S…...

【Linux杂货铺】期末总结篇3:用户账户管理命令 | 组账户管理命令
🌈个人主页:聆风吟_ 🔥系列专栏:Linux杂货铺、Linux实践室 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 第五章5.1 ⛳️Linux 账户5.2 ⛳️用户配置文件和目录(未完待续)5.2.1 …...

基于STM32设计的超声波测距仪(微信小程序)(186)
基于STM32设计的超声波测距仪(微信小程序)(186) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择1.5 系统框架图…...

Web前端-Web开发HTML基础2-list
一. 基础 1. 写一个列表标签,生成一个有三条记录的无序列表; 2. 写一个列表标签,生成一个有四条记录的无序列表; 3. 写一个列表标签,生成一个有五条记录的无序列表; 4. 写一个列表标签,生成一个…...

MAVSDK-Java安卓客户端编译与使用完整示例
效果: 1.启动PX4容器 2.监听QGC连接端口 3.手机与QGC连接到同一局域网(此例QGC为:192.168.6.250 手机为:192.168.6.86) 4.监听手机mavsdk_server连接端口 5.使用Android Studio打开MAVSDK-JAVA下的examples/android-c…...