JavaScript基础知识整理(最全知识点, 精简版,0基础版)

文章目录

一、输入和输出内容

1.1 输出

1.1.1 在浏览器的控制台输出打印

1.1.2 直接在浏览器的页面上输出内容

1.1.3 页面弹出警告对话框

1.2 输入

二、变量

2.1 变量是什么

2.2 变量的声明和赋值

2.3 变量的命名规范和规范

三、变量扩展(数组)

3.1 数组的声明

3.2 数组的使用

3.3 数组的长度

四、常量

4.1 常量的声明和赋值

五、数据类型

5.1 数字数据类型

5.2 字符串类型

5.3 布尔类型

5.4 null 类型

5.5 未定义类型

六、隐式转换和显示转换

6.1 使用 + 进行隐式转换

6.2 显示转换

七、运算符

7.1 算数运算符

7.2 赋值运算符

7.3自增自减运算符

7.4 比较运算符

7.5 逻辑运算符 

7.6 三元运算符

7.7 运算符的优先级

八、分支语句

8.1 单分支语句

8.2 双分支语句

8.3 多分支语句

8.4 switch分支语句

九、循环语句

9.1 while循环

9.2 for 循环

9.3 for循环的嵌套

十、数组的使用 

10.1 数组的声明(可以放任意的数据类型,不只是数字,这里)

10.2 取值

10.3 数组的长度表示

10.4 数组的基本使用

10.5 数组的相关操作

十一、函数的使用

11.1 封装函数

11.2 函数参数以及默认参数

11.3 函数的返回值 

11.4 作用域

11.4.1 全局作用域

11.4.2 局部作用域

11.5 匿名函数 (没有名字的函数)

11.5.1 函数表达式

11.5.2 立即执行函数

十二、对象

12.1 对象的基本使用 

12.2 对象的相关操作

12.3 对象的方法

12.4 遍历对象

12.5 内置对象

十三、随机数函数

十四、总结


一、输入和输出内容

1.1 输出

1.1.1 在浏览器的控制台输出打印

 console.log("I love JS")

1.1.2 直接在浏览器的页面上输出内容

document.write(111)

1.1.3 页面弹出警告对话框

alert("出错啦")

1.2 输入

prompt("请输入你的姓名")

显示一个对话框,对话框中包含一条信息,用来提示用户输入文字

二、变量

2.1 变量是什么

变量是一个容器,用来存储数据的。举一些生活中的例子,就比如比较熟悉的HTML标签、教室、宿舍等等

2.2 变量的声明和赋值

  使用关键字let 声明

let age = 20let arr = [10, 20, 30, 40, 50, 60, 70, 80, 90]let name = "张三"

案例: 交换两个变量

    <script>let a = 10let b = 20let tt = aa = bb = tdocument.write(a+"</br>" + b)</script>

2.3 变量的命名规范和规范

规则

1. 不能使用关键字:有特殊含义的字符,比如JavaScript内置的一些英语词汇:var, let, const, for, if...

2. 只能用数字、字母、下划线、$组成, 不能以数字开头

3. 严格区分大小写: 比如name和Name是两个不同的变量

规范:

1. 起名要有意义:比如商品,你可以使用goods, 这样别人看到就可以很快理解了

2. 可以采用小驼峰命名:比如用户姓名: userName

三、变量扩展(数组)

3.1 数组的声明

let arr = [1,2,3,4, "xx"]

3.2 数组的使用

数组是有序的,如果需要使用数组中的元素,可以使用索引号(下标)来查找,索引号从0开始

->  数组名[下标]

console.log(arr[0])   // ->> 1console.log(arr[2])   // ->> 3

3.3 数组的长度

console.log(arr.length)  // -> 5

四、常量

4.1 常量的声明和赋值

使用 const 声明
const PI = 3.14  
//常量声明时,必须赋值
//常量赋值后,不能修改
console.log(PI)
注意:常量不能够被重新赋值,常量在声明的时候必须赋值(初始化)

五、数据类型

JS的数据类型分为两大类:基本数据类型和引用数据类型

1. 基本数据类型: 数字类型number、字符串类型string、布尔类型boolean、空类型null、未定义型undefined

2. 引用数据类型:对象object

在JS中可以使用type of 来查看变量是什么数据类型 

5.1 数字数据类型

let num = 20
console.log(type of num)   // -> number

5.2 字符串类型

let name = "张三"
console.log(type of name)  // -> string

 1. 字符串的拼接 (使用 + 进行拼接)

console.log("我的同学叫" + name + ",他很帅")

2. 模板字符串 

 </script>let str = `xx`let str1 = 'xx1'let str2 = ''// 模板字符串// 1. 模板字符串用反引号标识// 2. 模板字符串中可以出现变量,变量用${变量名}标识// 3. 模板字符串中可以出现表达式,表达式用${表达式}标识// 4. 模板字符串中可以出现函数调用,函数调用用${函数名()}标识// 5. 模板字符串中可以出现多行文本,用\n标识let age = 20console.log(`我今年${age}岁了`);</script>

5.3 布尔类型

let isClick = true
console.log(type of isClick)   // -> trueconsole.log(3 > 4)  // -> false

5.4 null 类型

let obj = null

5.5 未定义类型

声明了变量,但是未赋值,那么这个变量就是未定义类型

let num
console.log(num)   // -> undefined

六、隐式转换和显示转换

6.1 使用 + 进行隐式转换

只要加号一侧有引号,就会将另一侧的数字型转换为字符串类型

console.log(1 + 1)   // -> 2 
console.log("xx" + 1)  // -> xx1

6.2 显示转换

1. 转为数字类型

let s = "1"
let num = Number(s)
console.log(num)   // -> 1

注意:(1)其实除了 + 外,  其他运算符 -, *, /,都有同样的作用

           (2)但是利用NUmber()进行强制转换时,所需转换的变量,去掉引号后,必须是数字,不然会变成NaN 

除了Number以外,还有两种方法可以转换为数字类型

1. parseInt()    >>   只保留整数

2.parseFloat()   >> 可以保留小数

 2.转为字符串类型

let num = 1
let str = String(num)
console.log(str)  ->  "1"

七、运算符

7.1 算数运算符

算数运算符我们应该已经很熟悉了: +, -, *, / , % ...

7.2 赋值运算符

1.   =

2. += , -=, *= ,/= ,......

let num = 10
num += 10    // -> 相当于 num = num + 10  

 7.3自增自减运算符

++

--

let num = 1
num = num + 1
console.log(num)  //  -> 2// same
num++
console.log(num)   ->  2

更多解释:

后置自增 i++ 和 前置自增 ++i  的区别:

let i = 1console.log(++i + 1);   // 结果是3// 注意: i是2// i先自加 1 ,变成2之后,再和后面的2相加
let i = 1
console.log(i++ + 1) // -> 2// i后加1,参与运算的i值仍是1

7.4 比较运算符

等于==(值相同),  全等===  (值和数据类型都相同) ,不等!=,  不全等!==,>, <, >=, <=

结果是布尔类型 

7.5 逻辑运算符 

逻辑与 &&  (一假则假), 逻辑或 || (一真则真), 逻辑非 !(假变真,真变假)

7.6 三元运算符

console.log(3 > 5 ? 3 : 5)

分析:如果3>5为true, 则结果为3, 否则结果为5 

案例:数字补零,, 也涉及到了+,字符串的拼接

// 1. 用户输入
let num = +prompt("请输入一个数字")alert(num < 10 ? '0' + num : num)

 7.7 运算符的优先级

这里面分的比较细! 

八、分支语句

8.1 单分支语句

if (i === 10) {document.write("猜对了!")
}

8.2 双分支语句

if (i === 10) {document.write("猜对了!")
} else {document.write("猜错了!")
}

案例:判断闰年 

let year = +prompt("请输入年份:")
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {alert(`${year}是闰年`)
} else {alert(`${year}不是闰年`)
}

 8.3 多分支语句

if() {} else if () {} else if () {} ... else {}

 直接上案例:成绩判断

let score = +prompt("请输入分数:")
if(score >= 90) {alert("A")
} else if (score >= 80) {alert("B")
} else if (score >= 70) {alert("C")
} else if (score >= 60) {alert("D")
} else {alert("不及格!")
}

 8.4 switch分支语句

语法格式!!

        switch (key) {case value:break;case value:break;...default:break;}

案例:还是上面成绩案例 

        let score = +prompt("请输入你的成绩:")score /= 10switch (score) {case 10:alert("A")break;case 9:alert("B")break;case 8:alert("C")break;case 7:alert("D")break;case 6:alert("E")break;default:alert("不及格")break;}

九、循环语句

9.1 while循环

// 循环三要素:  变量起始值;  终止条件;  变量变化量(用自增或者自减)let i = 0  // 变量起始值while(i <= 5) {  //终止条件document.write("我爱学习!")i++  //变量变化量}

案例:无限循环 -> 只要不满足退出的条件,就会无限执行:你爱我吗

        while(1) {let text = prompt("你爱我吗?")if (text === '爱') {break}}

9.2 for 循环

语法格式

for (变量初始值; 终止条件; 变量变化量) {// 循环体
}

案例演示:

        for (let k=0; k<3; k++) {document.write("好好学习!")}

 

 9.3 for循环的嵌套

直接上案例:九九乘法表

        let i, jfor (i = 1; i <= 9; i++) {for (j = 1; j <= i; j++) {document.write(`${j} * ${i} = ${i * j} `)}document.write("<br>")}

补充:那么什么时候使用for循环,什么时候使用while循环?

当循环次数确定时,使用for循环。循环次数不确定时,使用while循环 

十、数组的使用 

10.1 数组的声明(可以放任意的数据类型,不只是数字,这里)

let arr = [2, 6, 1, 7, 4]  //(可以放任意的数据类型,不只是数字,这里以数字举例)

10.2 取值

通过下标或索引号取值,从0开始

arr[0]    // -> 2
arr[1]   // -> 6

 10.3 数组的长度表示

arr.length    // -> 5

10.4 数组的基本使用

直接上案例:使用for循环遍历数组 , 求数组元素之和和平均值

        let arr = [2, 6, 1, 7, 4]let ilet sum = 0let average = 0.0for (i = 0; i < arr.length; i++) {sum += arr[i];}average = sum / arr.length * 1.0document.write(`和为${sum}, 平均值为${average}`)

案例:求数组中的最大值 

默认最大值和最小值的初始值为数组中的第一个元素arr[0]

        let arr = [2 ,6, 1, 77, 52, 225, 7]let max = arr[0]let min = arr[0]for (let i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i]}if (arr[i] < min) {min = arr[i]}}document.write(`最大值为${max}`)document.write(`最小值为${min}`)

10.5 数组的相关操作

修改:

        // 改let arr = []arr[0] = 1console.log(arr)let arr1 = ['蓝', '红', '黄']arr1[1] = '绿'console.log(arr1)

新增 :

        // 增// 1. push 末尾新增let arr2 = ['小明', '小强', '小刚']arr2.push('小华')console.log(arr2)console.log(arr2.push('小华'))  // 可以直接返回数组的长度// 2. unshift 开头新增let arr3 = [1, 2, 3, 4]console.log(arr3.unshift(6))   // 也可以直接返回数组的长度console.log(arr3)

删除 :

        // 删除// 1. pop()   可以删除数组中的最后一个元素,并且返回该元素的值let arr4 = [1, 3, 5, 7, 8, 9]console.log(arr4.pop())console.log(arr4)// 2. shfit()  删除第一个元素, 并且返回该元素的值console.log(arr4.shift())console.log(arr4)// 3. splice()  删除指定的元素// 语法:  arr.splice(起始位置->索引号, 删除几个元素)let arr5 = [9, 10, 87, 99, 76]console.log(arr5.splice(1,2))console.log(arr5)

 

十一、函数的使用

11.1 封装函数

函数: 可以实现代码复用,提高开发效率

      function 是执行特定任务的代码块

        

     1. 声明语法:

                function 函数名() {

                    函数体

                }

      2. 调用语法:

                函数名()

// 声明
function fn() {document.write("好好学习")
}// 调用
fn()

 11.2 函数参数以及默认参数

直接上案例: 封装一个函数,计算两个数的和 

// let a,b function sum(a, b) {console.log(a + b)}sum(4,3)   // ->  7

 基于上述代码如果调用函数时,没有传参,相当于a 和 b 都未定义,为undefined, 所以返回结果时NaN, 为了优化代码,我们可以设定默认参数

 

 

11.3 函数的返回值 

函数返回值的优点是便于得到数据,并对数据进行相应的处理和使用

关键字: return

        function sum(a=0, b=0) {return a + b}let sum1 = sum(4,3)console.log(sum1)

 11.4 作用域

11.4.1 全局作用域

作用于所有代码的执行环境(整个script标签内部)

在下述代码中定义了一个变量num , 它既可以在函数外部使用,也可以在函数内部使用 

 

11.4.2 局部作用域

作用域函数内的代码环境,因为跟函数有关,所以也叫函数作用域 

在下述代码中,在函数内部定义了一个变量 str, 在函数外部使用时,会报错

 

11.5 匿名函数 (没有名字的函数)

11.5.1 函数表达式

语法格式:

let fn = function() {// 函数体
}

 这里面 fn 就相当于函数的名字, 调用函数时, 直接用 fn() 即可

        // 1.函数表达式let fn = function () {console.log('函数表达式')}fn()

 

11.5.2 立即执行函数

立即执行函数就是,不用调用,直接就可以执行

语法格式: 

(function() {})()

        // 立即执行函数: 避免全局变量之间的污染// 多个立即执行函数,之间需要用 分号 隔开(function () {let num1 = 9console.log(11)})();(function () {let num2 = 10console.log(11)})()

 

十二、对象

对象是一种无序的数据集合,用来描述一个人或物

12.1 对象的基本使用 

语法格式:

let obj = {属性名: 属性值,...
}

比如描述一个人

let obj = {name: 'xx',age: 20,gender: '男'
}

 

 12.2 对象的相关操作

查找:

语法:对象名.属性

 

还有一种查的方法:

对象名['属性名']         console.log(obj['name'])

修改:对象名.属性 = 新值

        let obj = {name: 'xx',age: 20,gender: '男'}obj.name = 'yy'console.log(obj.name);

新增:对象名.属性 = 新值 

新增和修改的语法格式相同,只不过增的是对象中没有的属性 

 

 

 

 删除:delete 对象名.属性

 

 

 

12.3 对象的方法

 

 

12.4 遍历对象

        let obj = {name: 'xx',age: 20,gender: '男'}for (let k in obj) {console.log(k)  // k 是属性名, k字符串类型console.log(obj[k])  }

上述字符串的查找方式,上文有介绍过 

 

12.5 内置对象

 

 

 

十三、随机数函数

let num = Math.random()  // 返回一个 0-1 之间的随机小数, 包括0 ,不包括 1
console.log(num)

 生成0-10的随机数:

// 生成0-10的随机数:
Math.floor(Math.random() * (10+1))  // 向下取整

 同理:

// 生成5-10的随机数Math.floor(Math.random() * (5+1)) + 5// 生成N-M的随机数
Math.floor(Math.random() * (M-N+1)) + N

 案例:

let arr = [1, 2, 3]
let n = Math.floor(Math.random() * (arr.length))
console.log(arr[n]);

十四、总结

本片博客介绍了JavaScript的基础知识的内容,是自己学完后的总结,希望也可以帮助正在学习的你,后续也会继续更新js高级的相关知识。

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

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

相关文章

openGauss学习笔记-144 openGauss 数据库运维-例行维护-慢sql诊断

文章目录 openGauss学习笔记-144 openGauss 数据库运维-例行维护-慢sql诊断144.1 背景信息144.2 前提条件 openGauss学习笔记-144 openGauss 数据库运维-例行维护-慢sql诊断 144.1 背景信息 在SQL语句执行性能不符合预期时&#xff0c;可以查看SQL语句执行信息&#xff0c;便…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑垃圾处理与调峰需求的可持续化城市多能源系统规划》

这个标题涵盖了城市多能源系统规划中的两个重要方面&#xff1a;垃圾处理和调峰需求&#xff0c;并强调了规划的可持续性。 考虑垃圾处理&#xff1a; 含义&#xff1a; 垃圾处理指的是城市废弃物的管理和处置。这可能涉及到废物分类、回收利用、焚烧或填埋等方法。重要性&…

【开源】基于Vue+SpringBoot的河南软件客服系统

文末获取源码&#xff0c;项目编号&#xff1a; S 067 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S067。} 文末获取源码&#xff0c;项目编号&#xff1a;S067。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、…

搞懂内存函数

引言 本文介绍memcpy的使用和模拟实现、memmove的使用和模拟实现、memcmp使用、memset使用 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 memcpy memcpy的使用 memcpy的…

JS加密/解密之HOOK实战2

上一篇文章介绍了HOOK常规的应用场景&#xff0c;这篇我们讲一下HOOK其他原生函数。又是一个新的其他思路 很多时候&#xff0c;当我们想要某些网站的请求参数的时候&#xff0c;因为某些加密导致了获取起来很复杂。 这时候hook就十分方便了 源代码 var _JSON_Parse JSON.…

Vue:Vue的开发者工具不显示Vue实例中的data数据

一、情况描述 代码&#xff1a; 页面&#xff1a; 可以看到&#xff0c;input获取到了data数据&#xff0c;但是&#xff0c;vue-devtool没有获取到data数据 二、解决办法 解决办法1&#xff1a; data.name的值不能全是中文&#xff0c;比如改成aa尚硅谷 解决办法2&…

LeetCode 1457. 二叉树中的伪回文路径||位运算 DFS

1457. 二叉树中的伪回文路径 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中&#xff0c;存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的…

力扣(LeetCode)-1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

【交流】PHP生成唯一邀请码

目录 前言&#xff1a; 1.随机生成&#xff0c;核对user表是否已存在 代码&#xff1a; 解析&#xff1a; 缺点&#xff1a; 2.建表建库&#xff0c;每次从表中随机抽取一条&#xff0c;用完时扩充 表结构 表视图 代码 解析 缺点 结论&#xff1a; 前言&#xff1a; …

解读Stable Video Diffusion:详细解读视频生成任务中的数据清理技术

Diffusion Models视频生成-博客汇总 前言:Stable Video Diffusion已经开源一周多了,技术报告《Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets》对数据清洗的部分描述非常详细,虽然没有开源源代码,但是博主正在尝试复现其中的操作。这篇…

医学影像PACS信息化数字平台源码

PACS系统对医院影像科意义重大&#xff0c;将业务量巨大的影像检验流程依托于信息化技术&#xff0c;对于进行信息化建设的医院而言&#xff0c;是十分必要的。 PACS系统源码&#xff0c;集成三维影像后处理功能&#xff0c;包括三维多平面重建、三维容积重建、三维表面重建、三…

包装类, 泛型---java

目录 一. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 二. 泛型 2.1什么是泛型 2.2泛型的引入 2.3 泛型类语法 2.4 泛型类的使用 2.5 裸类型(Raw Type)(了解) 2.6 泛型是如何编译的 2.7 泛型的上界 2.8 泛型方法 一. 包装类 在 Java 中&#xff0c;由于基本…

uniapp实战 —— 竖排多级分类展示

效果预览 完整范例代码 页面 src\pages\category\category.vue <script setup lang"ts"> import { getCategoryTopAPI } from /apis/category import type { CategoryTopItem } from /types/category import { onLoad } from dcloudio/uni-app import { compu…

Nacos 配置加密功能也太鸡肋了吧,有种更好的方式

大家好&#xff0c;我是风筝&#xff0c;微信搜「古时的风筝」&#xff0c;更多干货 当项目中用了 Nacos 做配置中心&#xff0c;是不是所有的配置都放到里面呢&#xff0c;大部分时候为了省事和统一&#xff0c;系统所有的配置都直接放在里面了&#xff0c;有时候&#xff0c…

什么是自动化测试框架?常用的自动化测试框架有哪些?

无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“框架”…

Redis相关知识

yum安装redis 使用以下命令&#xff1a;直接将redis安装到Linux服务器&#xff08;Xshell&#xff09;中 yum -y install redis 启动redis 使用以下命令&#xff0c;以后台运行方式启动redis redis-server /etc/redis.conf & 操作redis 使用以下命令启动redis客户端 redis-…

RFID在新能源工厂大放异彩

RFID在新能源工厂大放异彩 我国在十四五规划中提出了建设绿色低碳发展的目标&#xff0c;新能源产业成为了国家发展的重点领域之一&#xff0c;开始大力支持各种新能源厂商发展。各个厂商之间不仅比产品、比技术。也比生产想要降本增效&#xff0c;为了实现这一目标&#xff0…

MBD Introduction

介绍 MATLAB是MathWorks公司的商业数学软件&#xff0c;应用于科学计算、可视化以及交互式程序设计等高科技计算环境。Simulink是MATLAB中的一种可视化仿真工具。 Simulink是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成以…

Spring基于xml半注解开发

目录 Component的使用 依赖注解的使用 非自定义Bean的注解开发 Component的使用 基本Bean注解&#xff0c;主要是使用注解的方式替代原有的xml的<bean>标签及其标签属性的配置&#xff0c;使用Component注解替代<bean>标签中的id以及class属性&#xff0c;而对…

算法Day26 数位统计

数位统计 Description 给你一个整数n&#xff0c;统计并返回各位数字都不同的数字x的个数&#xff0c;其中0 ≤ x < 10^n。 Input 输入整数n 0≤n≤13 Output 输出整数个数 Sample 代码 import java.util.Scanner;public class Main {public static void main(String[] ar…