Javascript学习随笔
Javascript 学习随笔
学习网站是:https://www.runoob.com/
因为在这之前我只系统学习了C,因此在学习Javascript的过程中主要采用了比较的方法.
代码小问题
为什么使用“+”?
|
在 JavaScript 中,+
运算符用于连接字符串。在这段代码中,"<br>"
是一个字符串,通过使用 +
运算符,我们将各种数据类型的类型输出连接成一个长字符串,然后将这个字符串设置为 <p>
元素的 innerHTML
。这样可以确保每种数据类型的类型都输出到段落中,而不会覆盖之前的输出。
如果我们不使用 +
运算符,而是使用多个 document.getElementById("demo").innerHTML
进行赋值,只有最后一个赋值会生效,因为每次赋值都会覆盖之前的内容。通过使用 +
运算符,我们将每种类型的类型连接成一个字符串,然后一次性将整个字符串赋值给 <p>
元素的 innerHTML
,这样就可以将所有类型都输出到段落中
数组:
|
对象
JavaScript 中的对象是一种复合数据类型,用于存储多个键值对 在这里被称为对象属性。对象可以包含各种类型的数据,包括其他对象、数组、函数等
关于键值对:我简单理解为名字和值一一对应的一种数据结构
对象方法
就是属性值为函数
特殊属性和方法:
原型(Prototype):每个对象都有一个原型,它是一个指向另一个对象的引用,可以用于实现继承。
构造函数(Constructor):用于创建对象的函数。
内置属性和方法:例如
toString()
、valueOf()
等,这些方法和属性是 JavaScript 内置对象的一部分,可以直接使用
事件
因为C中没有这个概念,所以这里着重写一下
在 JavaScript 中,事件是指在 HTML 文档中发生的某些事情或动作,比如用户的交互操作(例如点击、鼠标移动、键盘输入等)或者浏览器自身的操作(例如页面加载完成、窗口大小改变等)。
HTML文档:我单纯理解为这个页面中包含的所有东西
事件可以分为两类:内置事件和用户自定义事件。
内置事件:
内置事件是浏览器或者特定 HTML 元素自身触发的事件,比如:
页面加载完成事件 (
load
)鼠标点击事件 (
click
)鼠标移动事件 (
mousemove
)键盘按键事件 (
keydown
,keyup
,keypress
)表单提交事件 (
submit
)<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Event Examples</title>
</head>
<body>
<!-- Click Event Example -->
<button onclick="alert('按钮被点击了!')">点击我</button>
<hr>
<!-- Mousemove Event Example -->
<div style="width: 100px; height: 100px; background-color: red;" onmousemove="alert('鼠标移动到了盒子上!')"></div>
<hr>
<!-- Key Event Example -->
<input type="text"
placeholder="按下按键或者松开按键"
onkeydown="alert('按键按下了!')"
onkeyup="alert('按键松开了!')"
onkeypress="alert('按键被按下并松开了!')">
<hr>
<!-- Load Event Example -->
<script>
function pageLoaded() {
alert('页面加载完成!');
}
window.onload = pageLoaded;
</script>
</body>
</html>
用户自定义事件:
- 除了内置事件之外,开发者还可以自定义事件,以便在特定情况下触发 JavaScript 代码执行。这种自定义事件通常是通过
Event
对象的构造函数来创建,并且可以通过dispatchEvent()
方法手动触发。
- 除了内置事件之外,开发者还可以自定义事件,以便在特定情况下触发 JavaScript 代码执行。这种自定义事件通常是通过
比较运算符
===
:绝对相等=>值类型都相等
!==
:不绝对相等
for循环
大体相同,还有一种比较特别的for循环
itCompanies
是一个数组,for...of
循环用来遍历数组中的元素。company
是循环中的一个临时变量,每次迭代时,它会被赋值为数组中的一个元素。所以你的解释几乎正确,但是应该是将 company
赋值为 itCompanies
数组中的每个元素,而不是整个数组本身。
|
constructor 属性
constructor 属性返回所有 JavaScript 变量的构造函数。
Data()方法
方法 | 描述 |
---|---|
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数。 |
正则表达式
语法
/正则表达式主体/修饰符(可选)
使用字符串方法
在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。
exec() 方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
正则表达式修饰符
修饰符 可以在全局搜索中不区分大小写:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
错误
try catch throw
|
调试
debugger 关键字
debugger 关键字用于停止执行 JavaScript,并调用调试函数。
这个关键字与在调试工具中设置断点的效果是一样的。
可以先使用再声明
浮点型
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储
|
=>用乘除法解决问题
表单验证
由于与HTML的表单有关联,因此在这里先简单回顾一下HTML表单
具体可以参考另一篇笔记HTML表单
作用
表单验证可以包括以下内容:
- 必填字段验证:确保用户填写了表单中标记为必填的字段,防止用户提交空值或默认值。
- 格式验证:检查用户输入的数据格式是否正确,例如邮箱地址、电话号码、日期等。
- 长度验证:检查用户输入的数据长度是否符合要求,如最小长度、最大长度等。
- 数据类型验证:确保用户输入的数据类型正确,如数字、字母、日期等。
- 范围验证:检查数值型数据是否在指定的范围内,如年龄、价格等。
- 正则表达式验证:使用正则表达式对用户输入的数据进行更灵活的验证,可以实现复杂的格式匹配。
语法
|
用于获取 HTML 表单中名为 “myForm” 的表单中名为 “fname” 的输入字段的值,并将其存储在变量 x 中。
验证API
验证验证和表单验证的区别
- JavaScript 验证 API:
- JavaScript 验证 API 是 JavaScript 提供的一组 API 和方法,用于编写自定义的验证逻辑。
- 开发人员可以使用 JavaScript 验证 API 编写自己的验证函数,以根据特定的需求对用户输入进行验证。
- 这种方式更加灵活,可以实现各种复杂的验证逻辑,但需要编写更多的代码。
- 表单验证:
- 表单验证是 HTML 表单元素自带的一种验证机制,可以通过设置一些属性来定义验证规则。
- HTML5 提供了一些内置的表单验证属性,如
required
,min
,max
,pattern
等,可以直接在 HTML 中使用。 - 表单验证相对简单,适用于一些基本的验证需求,如必填字段、最小长度、最大长度、正则表达式验证等
this 关键字
我理解的This 表示对上一级对象的引用:
方法体内表示对该方法所属的属性的引用
单独使用,就是全局对象
在函数中,函数的所属者绑定默认到this上(这里和后面学习智能合约有关联)
在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素。
方法是与对象相关联的函数
在学习教程中看到了一篇笔记,可以帮助理解:
简单理解,this指向的是该this所在的最里层的object对象。
1、函数不是object对象,所以没有写在object对象里的函数调用this会指向window
2、构造函数是object对象,所以在构造函数中调用this会指向该构造函数
3、html元素是object元素,所以在html元素中调用this会指向该元素
4、函数1 return 函数2,函数2 return this,该this会指向window
例:
>let obj = {
fun1:function(){
return function(){
return this;
}
},
>};
>console.log(obj.fun1()()); //window
javascript:void(0) 含义
void 在C语言中也有涉及,表示没有返回值。
在javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值
href=”#”与href=”javascript:void(0)”的区别
- **href=”#”**:
- 这个用法将页面的滚动位置移动到页面顶部。当用户点击链接时,浏览器会尝试滚动到页面中 ID 为 “#” 的元素,而在大多数情况下这个元素并不存在,因此页面会回到顶部。
- 使用
href="#"
会触发页面滚动,有时可能会导致页面跳跃,尤其是在单页应用或具有滚动效果的页面中。
- **href=”javascript:void(0)”**:
- 这个用法是执行一个 JavaScript 表达式
void(0)
,它会返回 undefined,但不会导致页面跳转或滚动。 - 使用
href="javascript:void(0)"
不会触发页面滚动,因此不会导致页面跳跃
- 这个用法是执行一个 JavaScript 表达式
promise和异步编程
**异步编程 ** 通俗来讲就是,不按照顺序执行
Promise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败
Promise 构造函数返回一个 Promise 对象,该对象具有以下几个方法:
- then:用于处理 Promise 成功状态的回调函数。
- catch:用于处理 Promise 失败状态的回调函数。
- finally:无论 Promise 是成功还是失败,都会执行的回调函数。
感觉大部分学习基于代码会比较清楚:
|
函数调用
在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。
call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身
call()与apply()的不同
apply()的第二个参数是数组,call()是作为参数(从第二个起)单独传入。
声明:
有关javascript的初步学习就到这里了,后面主要通过一些比较小的项目来进一步理解和深化学习!
进阶的补充会继续更新博客,请期待一下!