JavaScript基础知识点速通

0 前言

本文是近期我学习JavaScript网课的笔记,一是方便自己速查回忆,二是希望帮到同样有需求的朋友们。

1 介绍

1.1 基本情况

JavaScript是一种编程语言,运行在客户端(浏览器)上,实现人机交互效果;
作用:a网页特效:监听用户的一些行为让网页做出对应的反馈;b表单验证:针对表单数据的合法性进行判断;c数据交互:获取后端的数据渲染到前端;d服务器编程:node.js。
JavaScript的组成,如下图1[1]
图片来自于黑马程序员前端JavaScript入门到精通全套视频教程P3

1.2 书写位置

1.2.1 内部JavaScript

直接写在html中,用Script标签包裹。

<script>alert('你好')
</script>

在这里插入图片描述

1.2.2 外部JS

例如

<script src="./dash.js/dist/dash.all.min.js">
//外部js,script中间不写代码
</script>

1.2.3 内联JavaScript

代码写在标签内部
Vue中常用

1.3 JS注释与结束符

JavaScript的组成,如下图3[1]
在这里插入图片描述
结束符
以;为结束,可以加,可以不加

1.4 JS输入输出语法

1.4.1输出语法

document.write('hello world')

向body输出内容,如果输出内容中有标签,也会被解析成网页元素。在网页中打印内容。

alert('你好')

页面弹出警示对话框

console.log()

控制台打印输出

1.4.2 输入语法

prompt('输入您的学号')

显示一个对话框,对话框包含文字信息,提示用户输入
在这里插入图片描述

1.5 字面量

字面量是在计算机中描述事/物
1100是数字字面量,'hello’字符串字面量,还有数组、对象字面量。

2 变量

2.1 变量是什么

计算机中存储数据的容器

2.2 变量的基本使用

2.2.1声明变量

let 变量名

2.2.2 变量赋值

let id
id=1

或者

let id=1

2.2.3 变量的本质

在内存中开辟一个小空间来存储数据,变量名是该小空间的名字。‘

2.2.4 变量名命名规则和规范

1规则
不能用关键字,如let, var, if, for等;
只能用下划线、字母、数字、$组成,且数字不能作为开头;
字母区分大小写
2规范
不遵守不会报错;
命名要有意义。
第一个单词首字母小写,后面每个单词首字母大写。

2.3 let和var区别简介

var可以先使用再声明(不合理);
var声明过的变量可以再次声明(不合理);

2.4 案例

在这里插入图片描述

    <script>let uname = prompt("请输入您的姓名:");let age = prompt("请输入您的年龄:");let gender = prompt("请输入您的性别:")document.write(uname,age,gender)</script>

3常量

const声明的变量称为常量
使用场景:当某个变量永远不会改变的时候,就可以用const声明,而不是let。
命名规则和变量一致。
常量赋值后,不能再被赋值
常量声明的时候必须赋值

4数据类型

4.1 分类

JS数据类型可以分成2大类:基本数据类型和引用数据类型
基本数据类型:
1number数字型
2string字符串型
3boolean布尔型
4undefined未定义型
5null 空类型
引用数据类型
object对象

4.2 数字类型

正数、负数、小数、整数

+,-,*,/,%
取余%:判断数字是否能被整除

4.3 字符串类型

4.3.1 基础

通过单引号、双引号和反引号包裹的数据都叫字符串,单引号和双引号包裹的字符串之间没有区别。
字符串的拼接:'str'+'ing'
'str'+'ing'+1
只要有一方是字符串,+就是拼接

4.3.2 模板字符串

let age = 100
document.write(`我今年${age}`)

在这里插入图片描述
模板字符串外面用反引号``包含,里面拼接的变量用${}包裹。

4.4布尔型、undefined型、空类型

4.1 布尔型

表示肯定或否定,只有两个值:true,false

4.2 undefined型

声明变量但是不赋值就是undefined型,只有一个值undefined
检测变量是undefined,表示没有值传过来

4.3 空类型

undefined表示没有赋值,null表示赋值了,但内容是空。null是一种对象。
一个变量里要存放对象,可以暂时赋值为null

4.5 检测数据类型

typeof x

或者

typeof(x)

4.6 类型的转换

js中用表单,prompt取过来的数字默认是字符串型。
隐式转换
+两边只要有一个是字符串,则将双方都转换成字符串
/ * -会把数据转换成数字型
+作为正号解析可以转换成数字型,如

console.log(+'12')

在这里插入图片描述
显式转换

1 Number(x)
2 parseInt(x)只取整数部分
3 parseFloat(x)只取小数部分

注意
‘’,0,undefined,null,false,NaN转换成布尔值后值都是false.

4.7案例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>h2{text-align: center;}table{border-collapse: collapse;margin: 0 auto;text-align: center;}</style>
</head>
<body><h2>订单确认</h2><table border="1"><tr><th>商品名称</th><th>商品价格</th><th>商品数量</th><th>总价</th><th>收货地址</th></tr><tr><td>小米青春plus</td><td>1000</td><td>5</td><td>5000</td><td>China</td></tr></table>
</body>
</html>

在这里插入图片描述

<body><h2>订单确认</h2><script>let price = Number(prompt("请输入价格"))let num = Number(prompt("请输入数量"))let address = prompt("请输入地址")let total = price*numdocument.write(`<table border="1"><tr><th>商品名称</th><th>商品价格</th><th>商品数量</th><th>总价</th><th>收货地址</th></tr><tr><td>小米青春plus</td><td>${price}元</td><td>${num}</td><td>${total}元</td><td>${address}</td></tr></table>`)</script>
</body>

由于模板字符串外面必须用反引号``包含,里面拼接的变量用${}包裹。因此,用反引号包裹所有表格,并放在document.write()里以打印。
在这里插入图片描述

5运算符

5.1 一元运算符

JS的运算符可以根据所需表达式的个数分为一元、二元、三元运算符
一元运算符:正负号
自增:++
作用:让变量值加1
自减:–
作用:让变量值减1
前置自增:

let num = 1
++m

后置自增:

let num = 1
m++

区别:前置自增和后置自增单独使用没有区别,参与运算拥有区别。
运算时,前置自增先自增再进行其他计算;后置自增时先运算再自加。

let i=1
console.log(i++ +1)
//打印结果是2,但是i的值也是2,因为先运算执行完再最后执行i++自加

5.2 比较运算符

== 判断左右两边的值是否相等
===判断左右两边的值和类型是否相等
!==左右两边不全等
比较结果为boolean类型,只会得到true和false。

5.3 逻辑运算符

错误写法:5<m<8
正确:m>5&& m<8
&&:逻辑与,两边都为true结果为true
||:逻辑或,两边有一个为true就为true
!:取反

6 语句

6.1 表达式和语句

表达式:是可以被求值的代码,可以写在赋值语句的右边
语句:不一定有值,比如alert()语句就不能被赋值

6.2 分支语句

6.2.1 if语句

if(条件1){
代码1
}
else if(条件2){
代码2
}
else{
代码3
}

6.2.2 三元运算符

符合?与:配合使用
语法:

条件?满足条件执行的代码:不满足条件执行的代码

一般用来取值
补0案例代码:

    <script>let num = prompt("请输入一个数字")let Num2 = Number(num)out = Num2 <10 ? 0 + num : numalert(out)</script>

6.2.3 switch分支语句

语句:

switch(数据){
case1:代码1break
case2:代码2break
defaul:代码nbreak
}

找到跟switch后面小括号里全等的case值,并执行里面对应的代码;若没有全等的case,则执行default里面的代码。
四则运算案例:

    <script>let num1 = prompt("请输入一个数字")let Num01 = Number(num1)let num2 = prompt("请输入一个数字")let Num02 = Number(num2)let symbol = prompt("请输入一个符号")switch(symbol){case '+': out = Num01 + Num02breakcase '-':out = Num01 - Num02breakcase '*':out = Num01 * Num02breakcase '/':out = Num01 / Num02default: out = '非法符号'break}alert(out)</script>

若输入!时:
在这里插入图片描述
switch…case语句通常处理case为确定值的情况,而if…else…语句更加灵活,通常用于范围判断。

6.3 循环结构

6.3.1 while循环

循环:重复执行一些操作:while循环是在满足条件期间,一直重复执行某些代码
while循环三要素:
1变量起始值
2终止条件
3变量变化量

案例:
1页面输出1到100

    <script>let i = 1while(i < 101){document.write(i)i++}</script>

如果想要竖着输出:

    <script>let i = 1while(i < 101){document.write(i + '<br>')i++}</script>

在这里插入图片描述
案例2:
计算1-100之间所有偶数和

    <script>let i = 1total = 0while(i < 101){if(i%2==0){total = total + i}        i++}document.write(total)</script>

在这里插入图片描述

6.3.2 循环的退出

continue和break
break:退出循环
continue:结束本次循环,进入下一次循环

6.3.3 for循环

for(变量起始值;终止条件;变量变化量){
//代码}

案例:九九乘法表
在这里插入图片描述

    <script>let result = 0for(let i = 1; i<10; i++ ){for(let j = 1; j<=i; j++){result = i * jdocument.write(j+'*'+i+'='+result+'&nbsp;')}document.write('<br>')}</script>

PS:
&nbsp;表示空格,想打印空格就加这个
如果想加点样式:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>span{display: inline-block;padding: 5px 10px;border: 1px solid pink;margin: 0 4px;}</style>
</head>
<body><script>let result = 0for(let i = 1; i<10; i++ ){for(let j = 1; j<=i; j++){result = i * jdocument.write(`<span>${i} * ${j} = ${result}</span>`)}document.write('<br>')}</script>
</body>
</html>

在这里插入图片描述

7数组

7.1 数组是什么

一种按照顺利保存数据的数据类型

7.2数组操作

改:
数组[下标] = 新值
增:

arr.push(新增内容)

上面arr.push方法将一个或者多个元素添加到数组的末尾,并重新返回该数组的新长度
对于可以返回长度:

    <script>let arr = [2,0,6,1,77,0,52,0,25,7]let newArr = []for(let i =0; i < arr.length; i++){if(arr[i]>=10){let len = newArr.push(arr[i])document.write(len+'&nbsp;')}}//document.write(newArr)//console.log(newArr)</script>

结果为
在这里插入图片描述

arr.unshift(新增的内容)

上面arr.unshift方法将一个或者多个元素添加到数组的开头,并重新返回该数组的新长度

删:

arr.pop()

方法可以从数组中删除最后一个元素,并返回该元素的值。

arr.shift()

删除第一个元素

arr.splice()

删除指定元素

arr.splice(start,deleteCount)

start:指定修改开始的位置(即数组中的标签值)
deleteCount:表示要移除元素个数,如果不设置,默认从指定位置删到最后

7.3 案例

1找[2,6,1,77,52,25,7]中最大值

    <script>let arr = [2,6,1,77,52,25,7]let max = arr[0]for(i=1;i<arr.length;i++){if(max<arr[i]){max=arr[i]}}document.write(max)</script>

2将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素筛选出来,放入新数组

    <script>let arr = [2,0,6,1,77,0,52,0,25,7]let newArr = []for(let i =0; i < arr.length; i++){if(arr[i]>=10){newArr.push(arr[i])}}document.write(newArr)console.log(newArr)</script>

8函数

8.1函数使用

//声明
function 函数名(){
//代码内容
}
//调用
函数名()
function getsum(num1,num2){document.write(num1+num2)}
getsum(1,2)

num1,num2是形参;1,2是实参;形参可以理解为是在这个函数内部声明的变量。

8.2 案例

1封装99乘法表并调用3次

    <script>function sheet99(){let result = 0for(let i = 1; i<10; i++ ){for(let j = 1; j<=i; j++){result = i * jdocument.write(`<span>${i} * ${j} = ${result}</span>`)}document.write('<br>')}}for(k = 0;k<3;k++){sheet99()}</script>

2函数封装-求学生总分

    <script>function getsum(arr){let sum = 0for(let i =0; i < arr.length; i++){sum = sum + arr[i]}return sum}arr = [1,2,3,4]    total = getsum(arr)document.write(total)//document.write(newArr)//console.log(newArr)</script>

可以通过设置形参arr的默认值,防止getsum()代码的报错:

    <script>function getsum(arr=[]){let sum = 0for(let i =0; i < arr.length; i++){sum = sum + arr[i]}return sum}arr = [1,2,3,4]    total = getsum()document.write(total)//document.write(newArr)//console.log(newArr)</script>

输出结果为0.
注意:
1 return后面的代码不会执行,会立即结束当前函数;
2 函数可以没有return,没有默认返回值为undefined;
3 函数内部变量不声明直接赋值,当作全局变量;
4函数内部的形参可以当作局部变量。

8.3 匿名函数

8.3.1 基本特点

//具名函数
function fn(){}
//匿名函数
function(){}

匿名函数没有名字,无法直接使用
使用方法:
1函数表达式
2立即执行函数

8.3.2 函数表达式

将匿名函数赋值给一个变量,通过调用变量名称来调用

let fn = function(){}
//调用
fn()

函数表达式与具名函数的不同:
具名函数调用位置随意,可以写到函数声明前;匿名函数不可以,先声明函数表达式再使用。

8.3.3 立即执行函数

场景:避免全局变量之间的污染
书写技巧:
1输入()()
2输入(fucntion(){})()
3(fucntion(){代码})()

9 对象

9.1 对象使用

9.1.1声明

let 对象名={}
let 对象名=new Object()

对象由属性和方法组成。
数据描述性的信息称为属性,如人的身高、体重;
属性一般都是成对存在的,包括属性名和值;
多个属性之间用逗号分开。
属性之间没有顺序可言。

9.1.2使用

1查
对象名.属性
或者
对象名[‘属性名’]
2改
对象名.属性=修改值
3增
对象名.新属性=新值
4删
delete 对象名.属性

9.1.3对象中的方法

let obj ={name:'jin',song: function(){console.log('win')}
}
//调用
obj.song

方法由方法名和函数名两部分组成,它们之间用:隔开;
多个属性之间用,隔开,
方法是依附在对象中的函数。

9.1.4 遍历对象

对象里是无序的键值对,没有规律,不能像数组一样遍历。

let obj ={name:'jin',age: 20,hobby: 'play'}
for(let i in obj){console.log(i)console.log(obj[i])
}

9.2 内置对象

9.2.1简介

Math.PI
random生成0,1之间的随机数
Math.ceil()向上取整
Math.floor()向下取整
Math.round()四舍五入
Math.round(-1.5) 为-1
Math.round(-1.51) 为-2
Math.max()取最大
Math.min()取最小
Math.abs()取绝对值

9.2.2random

生成0-10的随机数

Math.floor(Math.random()*11)

生成5-10的随机数

Math.floor(Math.random()*6)+5

生成N-M的随机数

Math.floor(Math.random()*(M-N+1))+N

参考

[1]黑马程序员前端JavaScript入门到精通全套视频教程JavaScript简介与体验
[2]什么是JavaScript

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

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

相关文章

面试知识储备-Vue3篇

1.ref和reactive Vue3为什么推荐使用ref而不是reactive ref: 将内部值包装在特殊对象中&#xff0c;是内部值具有响应性 reactive使对象本身具有响应性 若我们将同样的函数定义为一个方法而不是计算属性&#xff0c;两种方式在结果上确实是完全相同的&#xff0c;然而&#xf…

路由器基础(五): OSPF原理与配置

开放式最短路径优先 (Open Shortest Path First,OSPF) 是一个内部网关协议 (Interior Gateway Protocol,IGP),用于在单一自治系统(Autonomous System,AS) 内决策路由。OSPF 适合小型、中型、较大规模网络。OSPF 采用Dijkstra的最短路径优先算法 (Shortest Pat…

Java高级互联网架构师之路:垃圾回收器的介绍

本文重点 从本文开始我们将开启垃圾回收器的介绍了,我们知道垃圾回收算法是逻辑改变,而垃圾回收器是具体的实现。我们前面介绍的垃圾回收器有7个,本文将在添加三个,但是这三个目前来看不是很常用,我们只了解一下,我们主要还是讲解这7个垃圾回收器。 十个垃圾回收器 目…

nodejs+springboot+elementui+python的Sd球鞋销售平台的设计与实现-毕业设计

此网站系统的开发方式和信息管理方式&#xff0c;借鉴前人设计的信息和研发。以网站商品信息为主&#xff0c;购物商品为核心功能来进行设计和研发&#xff0c;把网站信息和技术整合&#xff0c;开发出一套Sd球鞋销售平台。用目前现有的新技术进行系统开发&#xff0c;提供后台…

HiveSQL中last_value函数的应用

一、背景 在以下数据中如何实现对每一个列按照更新时间取最新的非null值&#xff1f; 1 a a null 202301 202301 1 b b null null 202302 1 null c null null 202303 1 d null null null 202304如何实现…

安装虚拟机后ifconfig不显示IP地址及设置静态IP地址ssh连接

ifconfig不显示IP地址 可以看到ens160并没有显示IP地址&#xff0c;刚刚装好的虚拟机是很干净的&#xff0c;连网卡都没有&#xff0c;我们修改一个配置文件&#xff1a; vim /etc/sysconfig/network-scripts/ifcfg-ens160将文件中的onboot修改为yes&#xff0c;即启动时需不需…

pytorch学习第五篇:NN与CNN代码实例

这篇文章详细介绍了全链接神经网络实现方法,以及卷积的实现方法。最后我们发现,卷积的实现方法与全链接大同小异,因为 torch 为我们做了很多工作,我们来看看这两个有什么区别。 我们使用 torch 框架来实现两种神经网络,来对图形进行分类。 NN 首先我们引入依赖包 impor…

远程设备常用工具:向日葵、Todesk

其实按理说远程工具例如向日葵、Todesk如果是计算机专业、计算机从业者是必须知道的一个东西&#xff0c;但是在大学期间身边知道的人是少之又少的。 向日葵、Todesk工具的优势&#xff1a;方便、快捷、速度快等等我就不过多阐述了 PS:现在我就是在学校用远程写这篇 很多时候…

YOLO V1学习笔记

为什么要学YOLOV1_哔哩哔哩_bilibili 这个视频讲解的很好&#xff0c;建议在看这个之前看看卷积神经网络&#xff0c;会对卷积后的结果理解更加深刻一点。 一 背景 目标检测分为单阶段和两阶段模型。 之前的目标检测DPM、R-CNN、Fast-RCNN、Faster-RCNN都是双阶段模型&…

ElasticSearch集群架构实战及其原理剖析

ES集群架构 为什么要使用ES集群架构 分布式系统的可用性与扩展性&#xff1a; 高可用性 服务可用性&#xff1a;允许有节点停止服务&#xff1b;数据可用性&#xff1a;部分节点丢失&#xff0c;不会丢失数据&#xff1b; 可扩展性 请求量提升/数据的不断增长(将数据分布…

用android studio调试react native中的原生代码(windows+android)

要用Android Studio调试React Native原生代码&#xff0c; 1. 需要先在终端中运行react-native start命令启动React Native服务器。 2. 然后&#xff0c;在Android Studio中打开你的React Native项目&#xff08;\android\build.gradle&#xff09;&#xff0c;连接你的设备或…

[极客大挑战 2019]LoveSQL 1

题目环境&#xff1a;判断注入类型是否为数字型注入 admin 1 回显结果 否 是否为字符型注入 admin 1 回显结果 是 判断注入手法类型 使用堆叠注入 采用密码参数进行注入 爆数据库1; show database();#回显结果 这里猜测注入语句某字段被过滤&#xff0c;或者是’;被过滤导致不能…

linux jdk配置

1.下载jdk &#xff0c;以jdk1.8为例子 Java Downloads | Oracle JDK 8 Update Release Notes (oracle.com) 2.配置环境变量 1.下载相关jdk版本&#xff0c;执行以下命令安装jdk tar -zxvf jdk-8u144-linux-x64.tar.gz 2.编辑命令 vi /etc/profile 3.在最后加入下面配置 e…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中&#xff0c;一般不是标准的矩形波信号&#xff0c;信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标&#xff0c;包括电源、时钟、复位、CPU小系统、外部接口&#xff08;USB、网口、串口&#xff09;、逻辑芯片(CPLD…

【C++】异常【完整版】

目录 1.C语言传统的处理错误的方式 2. C异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3异常安全 3.4 异常规范 4.自定义异常体系 5.C标准库的异常体系 6.异常的优缺点 1.C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序…

“1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践

一分钟精华速览 “只知道系统有问题&#xff0c;但是找不到问题到底出在哪里”&#xff0c;这几乎是大家都面临过、或正在面临的问题。用户在投诉&#xff0c;但是我的指标都是正常的&#xff0c;到底是哪一环出问题了&#xff1f; 本文详细介绍了中国联通在智能运维领域的应用…

Asterisk Ubuntu 安装

更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…

3D医学三维技术影像PACS系统源码

一、系统概述 3D医学影像PACS系统&#xff0c;它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成&#xff0c; 具有完善的影像数据库管理功能&#xff0c;强大…

Leetcode76最小覆盖子串

思路&#xff1a;滑动窗口思想 1. 滑动窗口是什么&#xff1a;用一个滑动窗口为覆盖目标子串的字符串 2.怎么移动窗口&#xff1a;当不满足覆盖时右指针移动扩大范围&#xff0c;当覆盖了就移动左指针缩减范围直到再次不覆盖 3. 怎么判断是否覆盖&#xff1a;这里使用两个哈…