JavaScript基础知识点速通

news2024/11/23 21:42:06

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*num
        document.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 : num
        alert(out)
    </script>

6.2.3 switch分支语句

语句:

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

找到跟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 + Num02
            break
            case '-':out = Num01 - Num02
            break
            case '*':out = Num01 * Num02
            break
            case '/':out = Num01 / Num02
            default: 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 = 1
        while(i < 101){
            document.write(i)
            i++
        }

    </script>

如果想要竖着输出:

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

    </script>

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

    <script>
        let i = 1
        total = 0
        while(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 = 0
        for(let i = 1; i<10; i++ ){
            for(let j = 1; j<=i; j++){
                result = i * j
                document.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 = 0
        for(let i = 1; i<10; i++ ){
            for(let j = 1; j<=i; j++){
                result = i * j
                document.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 = 0
        for(let i = 1; i<10; i++ ){
            for(let j = 1; j<=i; j++){
                result = i * j
                document.write(`<span>${i} * ${j} = ${result}</span>`)
            }
            document.write('<br>')
        }
    }
    for(k = 0;k<3;k++){
        sheet99()
    }
    </script>

2函数封装-求学生总分

    <script>
        function getsum(arr){
        let sum = 0
        for(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 = 0
        for(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.coloradmin.cn/o/1168154.html

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

相关文章

【扩散模型】不同组件搭积木,获得新模型

学习地址&#xff1a; https://github.com/huggingface/diffusion-models-class/tree/main/unit3 VAE The Tokenizer and Text Encoder UNet In-Painting 例如&#xff1a;基于contrlnet做的校徽转图片

vue项目使用vite设置proxy代理,vite.config.js配置,解决本地跨域问题

vue3vite4项目&#xff0c;配置代理实现本地开发跨域问题 非同源请求&#xff0c;也就是协议(protocol)、端口(port)、主机(host)其中一项不相同的时候&#xff0c;这时候就会产生跨域 vite的proxy代理和vue-cli的proxy大致相同&#xff0c;需要在vite.config.js文件中配置&…

一、Linux开机、重启、关机和用户登录注销

1.【关机】 shutdown shutdown now 表示立即关机 shutdown -h now 表示立即关机 shutdown -h 1 表示1分钟后关机 halt 用来关闭正在运行的Linux操作系统 2.【重启】 shutdown -r now 表示立即重启 reboot 重启系统 sync …

设计模式之装饰模式--优雅的增强

目录 概述什么是装饰模式为什么使用装饰模式关键角色基本代码应用场景 版本迭代版本一版本二版本三—装饰模式 装饰模式中的巧妙之处1、被装饰对象和装饰对象共享相同的接口或父类2、当调用装饰器类的装饰方法时&#xff0c;会先调用被装饰对象的同名方法3、子类方法与父类方法…

中国人民大学与加拿大女王大学金融硕士—重要的是,你一直在努力

人虽然生下来就分三六九等&#xff0c;不同的人过着不同的生活&#xff0c;我的生活没办法选择&#xff0c;我只能尽我所能的让自己变得优秀。中国人民大学与加拿大女王大学金融硕士是我们无论怎样都可以变优秀的优质渠道。V13146152701 那么我们为什么要读研&#xff0c;读研…

串口通信代码整合1

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

OLE DB 访问接口所需的(最大)数据长度为 18,但返回的数据长度为 6。

sqlserver查询oracle链接服务器视图,报错 给最终返回的字符串进行类型转换,字符串大小按返回值最大的那个oracle源本字段类型长度 aaaaaa AS yljgbmcast(aaaaaa AS varchar(10)) AS yljgbm

Proteus仿真--1602LCD显示仿手机键盘按键字符(仿真文件+程序)

本文主要介绍基于51单片机的1602LCD显示仿手机键盘按键字符&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中左下角12个按键模拟仿真手机键盘&#xff0c;使用方法同手机键一样&#xff0c;长按自动跳动切换键值&#xff0c;松手后确认选择&#xff…

API接口加密,解决自动化中登录问题

一、加密方式 AES&#xff1a;对称加密&#xff0c;快RAS&#xff1a;非对称加密&#xff0c;慢AESRAS&#xff1a;安全高效 加密过程&#xff1a;字符串》字节流》加密的字节流&#xff08;算法&#xff09;&#xff0c;解密有可能出现乱码&#xff0c;所以不能直接转成字符…

python+selenium自动化测试--鼠标悬停浮窗定位

页面上有些元素会隐藏起来&#xff0c;要鼠标放到某个位置才会显示出来&#xff0c;例如百度首页https://www.baidu.com/设置下面的隐藏按钮&#xff0c;如下图所示 定位鼠标悬停才显示的元素&#xff0c;要引入新模块&#xff0c;如下所示 from selenium.webdriver.common.ac…

12.JavaScript(WebAPI) - JS api文献精解

文章目录 1.WebAPI 背景知识1.1什么是 WebAPI1.2什么是 API1.3API 参考文档 2.DOM 基本概念2.1什么是 DOM2.2DOM 树 3.获取元素3.1querySelector3.2querySelectorAll 4.事件初识4.1基本概念4.2事件三要素4.3简单示例 5.操作元素5.1获取/修改元素内容5.1.1innerText5.1.2innerHT…

AD9371 官方例程裸机SW 和 HDL配置概述(二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…

javafaker测试数据生成实战

javafaker测试数据生成实战 1.背景2.介绍2.1 特点 3. 使用3.1 基础使用3.1.1 maven依赖3.1.1 使用示例 3.2 进阶使用3.1 生成中文信息3.2 根据姓名生成账号3.2.1 maven依赖3.2.2 中文转拼音工具类 3.3 高级使用3.3.1 中文性名重复处理方案1: 偷懒方式方案2: 较真模式 1.背景 最…

ChatGPT 被爆重大隐私泄露!在回答时突然蹦出陌生男子自拍照,你的数据都将被偷走训练模型!

ChatGPT 被爆重大隐私泄露 &#xff01; 一位用户在向 ChatGPT 询问 Python 中的代码格式化包 black 的用法时&#xff0c;没有一点点防备&#xff0c;ChatGPT 在回答中插入了一个陌生男子的自拍照&#xff08;手动捂脸.jpg&#xff09; 可以看到刚开始 ChatGPT 还相当正常&am…

智慧灯杆网关智能化选择(网关助力城市完整项目方案)

在当代城市发展中&#xff0c;智慧照明作为一项重要的技术创新&#xff0c;正逐渐改变着我们的城市生活。作为城市智慧照明的核心设备&#xff0c;智慧灯杆网关SG600凭借出色的性能和创新的解决方案&#xff0c;成为了引领城市智慧照明的完美选择。本文将详细介绍SG600的特点和…

linux centos7安装colmap

centos安装colmap 一、安装依赖 sudo yum install \gflags-devel \glog-devel \glew-devel \atlas \atlas-devel \lapack-devel \blas-devel \flann-devel \lz4-devel \sqlite-devel \metis-devel \qt5-qtbase-devel二、编译安装colmap git clone https://github.com/colmap/…

剑指JUC原理-10.并发编程大师的原子累加器底层优化原理(与人类的优秀灵魂对话)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

服装手机壳抱枕diy来图定制小程序开发

服装手机壳抱枕diy来图定制小程序开发 一、我们的定位与特色 首先&#xff0c;我们是一个多元化商品定制商城。与其他商城不同的是&#xff0c;我们致力于提供全方位的定制服务&#xff0c;包括手机壳、抱枕、服装、水杯贴图等各类商品。 此外&#xff0c;我们还提供冲洗照片…

C语言中什么时候用“->”

使用说明 "->"是C语言中的一个运算符&#xff0c;它用于访问结构体或者联合体中的成员&#xff0c;其左边是一个指向结构体或者联合体的指针&#xff0c;右边是需要访问的成员名。 举例说明 定义结构体 # include <stdio.h> # include <stdlib.h>…

【算法练习Day37】零钱兑换 II组合总和 Ⅳ

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 零钱兑换 II组合总和 Ⅳ总结…