JavaScript编程语言的学习

news2024/9/20 22:30:01

一、JavaScript介绍

JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式(embedded)语言。它本身提供的核心语法不算很多,只能用来做一些数学和逻辑运算。

1.1 JavaScript与ECMAScript的关系

ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。

1.2 JavaScript标识符

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名

标识符是由:字母、美元符号($)、下划线(_)和数字组成,其中数字不能开头

1.3 JavaScript保留关键字

JavaScript有一些保留字,不能用作标识符:

arguments、 break、case、catch、class、const、continue、debugger、 default、delete、do、else、enum、eval、export、 extends、false、finally、for、function、if、implements、 import、in、instanceof、interface、let、new、null、 package、private、protected、public、return、static、 super、switch、this、throw、true、try、typeof、var、 void、while、with、yield。

1.4 变量与常量

变量

var num = 10;

num = 20;

常量

使用const定义常量后,常量无法改变

const URL = "http://baidu.com";

二、JavaScript引入到HTML文件中

2.1 嵌入到HTML文件中

2.2 引入本地独立JS文件

type="text/javascript" 表示这个脚本(script)类型是Javascript,可以不写,但是建议写上。

2.3 引入网络来源文件

三、JavaScript注释

源码中注释是不被引擎所解释的,它的作用是对代码进行解释。

Javascript 提供两种注释的写法:一种是单行注释,用//起头;另一种是多行注释,放在/*和*/之间。

四、JavaScript的3种输出方式

五、数据类型

JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。

①数值  (number)

②字符串  (string)

③布尔  (boolean)

④对象(object)

var user = {
    name:"徐晓率",
    age:20,
    learn:true
}

⑤undefind  和 null

null与undefined都可以表示“没有”,含义非常相似。

基本数据类型一般初始化为“没有”时,为undefind

对象数据类型一般初始化为“没有”时,为null

六、运算符

6.1 加法运算符

加法运算符(+)是最常见的运算符,用来求两个数值的和

①数值相加

②非数值相加

③与字符串相加

比较特殊的是,如果是两个字符串相加,这时加法运算符会变成连 接运算符,返回一个新的字符串,将两个原字符串连接在一起。

如果一个运算子是字符串,另一个运算子是非字符串,这时非字符串会转成字符串,再连接在一起。

6.2 算术运算符

加减乘除运算符

加减乘除运算符就是基本的数学运算符效果,其中加法比较特殊

6.3 自增和自减运算符

自增和自减运算符,是一元运算符,只需要一个运算子。它们的作用是将运算子首先转为数值,然后加上1或者减去1。

自增和自减运算符有一个需要注意的地方,就是放在变量之后,会 先返回变量操作前的值,再进行自增/自减操作;放在变量之前,会先进行自增/自减操作,再返回变量操作后的值。

6.4 赋值运算符

6.5 比较运算符

比较运算符用于比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件。

注意:“==”和“===”的区别

  • ==:双等比较值
  • ===:三等比较值和类型

6.6 逻辑运算符

①取反运算符(!)

布尔值取反

非布尔值取反

对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都为false。

②且运算符(&&)

多个条件都要满足

③或运算符(||)

6.7位运算符

位运算符直接处理每一个比特位(bit),是非常底层的运算,好处是速度极快,缺点是很不直观,许多场合不能使用它们,否则会使代码难以理解和查错。

快速计算位移方案

  • 左移运算符就是*2的n次方(n代表位移次数)
  • 右移运算符就是/2的n次方 (n代表位移次数,不同点,出现小数时要取整)

七、运算优先级

八、类型转换

8.1 自动转换

遇到以下两种情况时,JavaScript 会自动转换数据类型,即转换是自动完成的,用户不可见。

8.2 强制转化(JS中依靠函数进行强制类型转换)

强制转换主要指使用Number( )、String( )和Boolean( )三个函数,手动将各种类型的值,分布转换成数字、字符串或者布尔值。

①Number()

使用Number函数,可以将任意类型的值转化成数值。

②String() 

String()函数可以将任意类型的值转化成字符串,转换规则如下:

③Boolean()

Boolean函数可以将任意类型的值转为布尔值

它的转换规则相对简单:除了以下五个值的转换结果为false,其他的值全部为true。



九、条件语句

if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。所谓布尔值,指的是 JavaScript 的两个特殊值,true表示真,false表示伪。

9.1 if语句语法规范

9.2 if...else语句

if代码块后面,还可以跟一个else代码块,表示不满足条件时,所要 执行的代码。

多个if...else连接

对同一个变量进行多次判断时,多个if...else语句可以连写在一起。

if...else嵌套

else代码块总是与离自己最近的那个if语句配对。

9.3 switch语句

需要注意的是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。

switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

十、三元运算符

JavaScript还有一个三元运算符(即该运算符需要三个运算子) 也可以用于逻辑判断。

十一、循环语句

11.1 for循环

循环语句用于重复执行某个操作 for 语句就是循环命令,可以指定循环的起点、终点和终止条件。

for语句后面的括号里面,有三个表达式。

  • 初始化表达式(initialize):确定循环变量的初始值,只在循环开始时执行一次。
  • 布尔表达式(test):每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环。
  • 迭代因子(increment):每轮循环的最后一个操作,通常用来递增循环变量。

11.2 while循环 

While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。

11.3 do…while循环

do...while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。

11.4 break 语句和 continue 语句 

①break语句

用于跳出代码块或循环

②continue语句

用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环

十二、字符串

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中

单引号字符串的内部,可以使用双引号。

双引号字符串的内部,可以使用单引号。

如果要在单引号字符串的内部,使用单引号,就必须在内部的单引 号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。

如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。

12.1 转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

12.2 length 属性

length属性返回字符串的长度,该属性也是无法改变的

12.3 字符串转码

①Base64转码

所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、 a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理 JavaScript 原生提供两个 Base64 相关的方法。

如果非要处理中文,需要在增加两个方法

12.4 字符串方法_charAt()

charAt() 方法返回指定位置的字符,参数是从 0 开始编号的

如果参数为负数,或大于等于字符串的长度, charAt() 返回空字符串

12.5 字符串方法_concat()

concat() 方法用于连接两个字符串,返回一个新字符串,不改变原字符串

12.6 字符串方法_slice()

slice() 方法用于从原字符串取出子字符串并返回,不改变原字符串。 它的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)

如果省略第二个参数,则表示子字符串一直到原字符串结束。

如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。

如果第一个参数大于第二个参数, slice() 方法返回一个空字符串。

12.7 字符串方法_substring()

substring() 方法用于从原字符串取出子字符串并返回,不改变原字符串,跟 slice() 方法很相像。它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

如果第一个参数大于第二个参数, substring() 方法会自动更换两个参数的位置。

如果参数是负数, substring() 方法会自动将负数转为0

由于这些规则违反直觉,因此不建议使用 substring() 方法,应该优先使用 slice()

12.8 字符串方法_substr()

substr() 方法用于从原字符串取出子字符串并返回,不改变原字符串, 跟 slice() 和 substring() 方法的作用相同。

substr() 方法的第一个参数是子字符串的开始位置(从0开始计算), 第二个参数是子字符串的长度。

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串。

12.9 字符串方法_indexOf()/lastIndexOf()

indexOf() 方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回 -1 ,就表示不匹配。

indexOf() 方法还可以接受第二个参数,表示从该位置开始向后匹配。

lastIndexOf() 方法的用法跟 indexOf() 方法一致,主要的区别是 lastIndexOf() 从尾部开始匹配, indexOf() 则是从头部开始匹配。

12.10 字符串方法_trim()

trim() 方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。

该方法去除的不仅是空格,还包括制表符( \t 、 \v )、换行符 ( \n )和回车符( \r )。

12.11 字符串方法_toLowerCase()/toUpperCase()

toLowerCase() 方法用于将一个字符串全部转为小写, toUpperCase() 则是全部 转为大写。它们都返回一个新字符串,不改变原字符串。

将字符串首字母变为大写。

12.12 字符串方法_search()/replace()

search() 方法确定原字符串是否匹配某个子字符串,返回值为匹配的第一个位置。如果没有找到匹配,则返回 -1 。

replace() 方法用于替换匹配的子字符串。

12.13 字符串方法_split()

split() 方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。

如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符。

如果省略参数,则返回数组的唯一成员就是原字符串。

split() 方法还可以接受第二个参数,限定返回数组的最大成员数。

十三、数组

数组(array)是按次序排列的一组值。每个值的位置都有编号(从 0开始),整个数组用方括号表示。

两端的方括号是数组的标志。

除了在定义时赋值,数组也可以先定义后赋值。

任何类型的数据,都可以放入数组。

如果数组的元素还是数组,就形成了多维数组。

数组的本质本质上,数组属于一种特殊的对象。typeof运算符会返 回数组的类型是object。

13.1 length 属性

数组的length属性,返回数组的成员数量。

length属性是可写的。如果人为设置一个小于当前成员个数的值, 该数组的成员会自动减少到length设置的值。

清空数组的一个有效方法,就是将length属性设为0

13.2 构造函数

数组的空位

当数组的某个位置是空元素,即两个逗号之间没有任何值,我们称该数组存在空位。

Array 是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。

如果没有使用 new ,运行结果也是一样的。

13.3 数组静态方法_Array.isArray() 

Array.isArray 方法返回一个布尔值,表示参数是否为数组。它可以弥补 typeof 运算符的不足

13.4 数组方法_push()/pop()

push 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

十四、函数

函数是一段可以反复调用的代码块。

14.1 函数的声明

JavaScript 有三种声明函数的方法

①function 命令:

function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。

②函数表达式

除了用function命令声明函数,还可以采用变量赋值的写法

③Function 构造函数

第三种声明函数的方式是Function构造函数。

注意1:如果同一个函数被多次声明,后面的声明就会覆盖前面的声明

注意2:

JavaScript 引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。

但是,如果采用赋值语句定义函数,JavaScript 就会报错。

不能在条件语句中声明函数

根据 ES5 的规范,不得在非函数的代码块中声明函数,最常见的情 况就是if语句

14.2 函数的属性和方法

①name 属性

函数的name属性返回函数的名字

如果是通过变量赋值定义的函数,那么name属性返回变量名

name属性的一个用处,就是获取参数函数的名字

②length 属性 

函数的length属性返回函数预期传入的参数个数,即函数定义之中的参数个数

③toString()

函数的toString方法返回一个字符串,内容是函数的源码

14.3 立即调用的函数(IIFE) 

在 Javascript 中,圆括号()是一种运算符,跟在函数名之后,表示调用该函数。比如,print()就表示调用print函数。那如何让函数自己执行呢

自执行函数传递参数

 函数体放在小括号中,参数放在函数体后

十五、对象

什么是对象?

对象(object)是 JavaScript 语言的核心概念,也是 最重要的数据类型简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),则必须加上引号,否则会报错。

对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。

如果属性的值还是一个对象,就形成了链式引用

15.1 对象属性

①读取属性

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符

15.2 属性的赋值

点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值

JavaScript 允许属性的“后绑定”,也就是说,你可以在任意时刻新增属性,没必要在定义对象的时候,就定义好属性

15.3 查看所有属性

查看一个对象本身的所有属性,可以使用 Object.keys() 方法

15.4 delete 命令

delete 命令用于删除对象的属性,删除成功后返回 true

只有一种情况, delete 命令会返回 false ,那就是该属性存在,且不得删除(使用率极低)

15.5 for…in 循环

for...in 循环用来遍历一个对象的全部属性

15.6 对象方法

Object 对象的方法分成两类: Object 本身的方法与 Object 的实例方法

①Object 对象本身的方法

所谓”本身的方法“就是直接定义在 Object 对象的方法

②Object 的实例方法

所谓实例方法就是定义在 Object 原型对象 Object.prototype 上的方法。它可以被 Object 实例直接使用。

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

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

相关文章

【流式输出】LangChain流式输出的概念

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:JavaScript小贴士 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续…

Visual Studio提示‘缺少MSVXXXX.dll文件’和‘应用程序无法正常启动0xc000007b’的解决办法

vs调试bug记录 1提示:缺失MSVCR120D.dll 在该地址下载dll文件: https://cn.dll-files.com/search/?qMSVCR120D.dll 下载之后放入本地C:\Windows\System32文件夹里面,缺失MSVCR120D.dll的错误信息消失 2提示:应用程序无法正常启…

深入解析Linux轻量级进程:线程的概念、原理、优缺点及其与进程的关系与区别

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 📚Linux线程📕什么是线程*可以使用多进程去并发的执行一个进程的代码,那为什么要由线程呢&#x…

Dev C++:简单步骤下载与安装指南

1. 前言 在当今这个数字化时代,编程已成为连接创意与技术的桥梁,它不仅推动着科技的进步,也深刻地改变着我们的生活方式。对于初学者而言,选择一款合适且易于上手的集成开发环境(IDE)是学习编程旅程中的重…

Vmware虚拟机断电重启后无法正常启动报Unmount and run xfs_repair

目录 一、问题描述二、解决方法 一、问题描述 Vmware虚拟机断电重启后无法正常启动,报错信息如下: 二、解决方法 执行以下命令: umount /dev/sda5 xfs_repair -L /dev/sda5 reboot

jmeter响应断言、json断言、断言持续时间、大小断言操作

在jmeter断言当中、常用的有响应断言、json断言、断言持续时间,大小断言等 一、响应断言 Apply to:断言应用的范围,这里默认,通常发出一个请求只触发一个服务器测试字段 响应文本,response响应体内的信息响应代码&am…

awk详解

文章目录 一、概述二、工作原理三、工作流程3.1 运行模式3.2 执行流程 四、基本语法4.1 命令格式 五、实战案例5.1 开始块(BEGIN block)5.1.1print 5.2 内置变量5.3 BEGIN END 运算5.3.1 扩展生产:网卡的ip、流量5.3.2 根分区的可用量5.3.3 a…

python与pytroch相关

1.pytroch模型类 PyTorch 是一个易学且清晰明了的深度学习库。本节讲解如何查看一个模型的结构。 首先,最简单创建模型的方式如下: #导入必要的库 import torch.nn as nn myNetnn.Sequential(nn.Linear(2,10),#第一层(全连接层)&…

Leetcode236经典题目二叉树的最近公共祖先

本次为大家带来的题目是leetcode236二叉树的最近公共祖先 本道题的直观思路是自底向上进行寻找,如果存在的话那么向上返回,如何能够自底向上遍历呢?我们可以利用回溯进行处理,那么需要注意的是进行回溯的时候一定要使用后序遍历来…

Centos7安装FFmpeg详细步骤(已验证成功)

最近我们需要使用FFmpeg来合成视频功能,这就需要用到服务器必须安装FFmpeg了。 FFmpeg 是一款功能强大的跨平台命令行工具,可以处理各种音频和视频文件,包括转换视频和音频格式、剪辑、合并视频和音频、提取音频、添加字幕、添加水印、调整视…

读书学习笔记入门 # Datawhale X 李宏毅苹果书 AI夏令营

文章目录 学习目标:学习内容:Task 1 通过案例了解机器学习机器学习(Machine Learning,ML)和深度学习(Deep Learning,DL)的基本概念什么是回归(regression)什么…

【机器学习】表示学习的基本概念和方法以及编解码结构的基本概念

引言 表示学习(Representation Learning)是机器学习的一个子领域,它专注于学习数据的表示形式,即数据的高层特征或抽象概念 文章目录 引言一、表示学习1.1 表示学习的重要性1.2 表示学习的方法1.3 应用场景1.4 挑战1.5 总结 二、如…

AUTOSAR_EXP_ARAComAPI的5章笔记(2)

返回目录 5.3 Proxy Class Proxy Class从AutoSar元模型的服务接口描述中生成。 ara::com确实标准化了生成的Proxy Class的接口。一个AP产品供应商的工具链将生成一个代理实现类来精确地实现这个接口。 注意: 因为Proxy Class必须提供的接口是由ara::com定义的,所…

教你手机投屏到电视方法,用电视屏幕让家庭蛋糕制作更有趣

心血来潮,我突然想要尝试跟着手机视频制作蛋糕。当我向老妈提起这个想法时,她也表示出了浓厚的兴趣,想要一起学习如何制作蛋糕。 然而,我们很快意识到一个问题:如果我们俩都挤在狭小的厨房里,一边看手机一…

51单片机-LED点阵屏介绍

作者:Whappy 时间:2024.9.3 目的:手撕51 74HC595,原理很简单,就是通过串行输入端SER,将一个字节的数据一位一位的传送到我们的移位寄存器中,图左边第一个区域,则SERCLK就是给移位节…

[STM32]从零开始的STM32 LED教程(小白向)

一、为什么LED会作为第一个例程 大家可能已经发现了,我们大部分的STM32教程都将LED作为教程中的第一个例程。为什么呢?在我看来,之所以把LED作为教程的第一个例程,因为这个实验能够让新手直观的看到实验现象,在操作GPI…

记一次某中学系统越权漏洞

一、确定测试站点 资产的收集依旧是按照弱口令与注册进站的思路进行寻找(具体思路可参考上篇文章,含有完整的收集思路与个人信息搜集方法)。最后确定了该站点,密码依旧存在弱口令: 于是利用默认密码成功登录该站点&am…

cocotb备忘录

按位给和int int后接的值,建议在32之内。大于32位建议按位给,因为int强制类型转换有范围 第二,低位给到低位,高位给到高位 # 将src_ip和dst_ip给到phv中,TMD以后只要报错在这个范围里面,TMD直接马上用手算一遍能不能…

自闭症谱系障碍:探索这一复杂神经发育障碍的奥秘

自闭症,也被称为孤独症谱系障碍(ASD),是一种深刻影响儿童神经发育的复杂障碍。它以独特的社交交流障碍、重复刻板行为以及兴趣范围的极度狭窄为主要特征,为患者及其家庭带来了诸多挑战。 自闭症的成因至今仍是科学界探…

构建私有CA和证书

一、准备 两台虚拟机 192.168.252.148 CA 192.168.252.149 客户端 二、构建私有CA 192.168.252.148 CA 安装openssl 1.检查是否存在 rpm -qa openssl 2.安装或者更新openssl yum install openssl openssl-devel -y 查看CA相关配置 /etc/pki/tls/openssl.cnf这个文件是…