这里写目录标题

  • 总体JS知识流程
  • JS基本知识
  • JS组成
  • 引入方式:内联、内部形式、外部
  • 输入输出
  • 字面量
  • let(推荐)和var(面经有)
  • 变量(标识符)规则(3+1(不能数字开头))
  • typeof 关键字检测数据类型
  • JS数据类型
  • 模板字符串${age}
  • 数据类型的转换
  • 表格变量例子
  • 运算符
  • 逻辑运算符里的短路(中断与否)(5个假的),先算&&后||
  • 表达式和语句
  • case
  • 浏览器断点
  • 循环
  • 数组操作(增push\unshift删pop\shift\slice改查)
  • 综合案例
  • 匿名函数
  • 立即执行函数
  • 案例——时、分、秒
  • 参数个数!
  • 对象
  • 表格渲染数据
  • Math内置对象
  • 任意范围随机数
  • 案例——根据数组对象渲染排版
  • 其他补充JS知识
  • 补充



VScode主题:one dark pro插件

总体JS知识流程

java script 模板 java script编程_前端

JS基本知识

JS组成

ECMAscript、DOM、BOM

引入方式:内联、内部形式、外部

如果 script 标签使用 src 属性引入了某 .js 文件,那么 标签的代码会被忽略!!!如下代码所示:

<body>
	<!-- 内联形式:通过 script 标签包裹 JavaScript 代码 -->
  	<script>
   	 	alert('嗨,欢迎来传智播学习前端技术!');
  	</script>
  	
	<!-- 内部-->
	<button @click="alert('月薪过万')">点击</button>
	
  	<!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
  	<script src="demo.js">
    	// 此处的代码会被忽略掉!!!!
  		alert(666);  
  	</script>
</body>

输入输出

一输入三输出:

document.write(‘要输出的内容’); //语句的分号可加可不加
alert(‘要输出的内容’);
console.log(‘xxx’);
prompt(‘请输入您的姓名:’);以弹窗形式提示用户输入,//输入的是一个字符串类型

字面量

java script 模板 java script编程_java script 模板_02

let(推荐)和var(面经有)

以下是使用 let 时的注意事项:

  1. 允许声明和赋值同时进行
  2. 不允许重复声明
  3. 允许同时声明多个变量并赋值
  4. JavaScript 中内置的一些关键字不能被当做变量名

以下是使用 var 时的注意事项:

java script 模板 java script编程_前端_03

变量(标识符)规则(3+1(不能数字开头))

  1. 只能是字母、数字、下划线、$,且不能能数字开头
  2. 字母区分大小写,如 Age 和 age 是不同的变量
  3. JavaScript 内部已占用于单词(关键字let、var或保留字int等)不允许使用
  4. 尽量保证变量具有一定的语义,见字知义,推荐小驼峰后面单词首字母大写

typeof 关键字检测数据类型

<script> 
    // 检测 1 是什么类型数据,结果为 number
    document.write(typeof 1);

	// typeof 结合字符串隐式转化
	let num = 10
	console.log(typeof num + '11') // number11
	console.log(typeof(num + '11')) // string
	console.log(typeof(num + +'11')) // number
</script>

JS数据类型

注:JavaScript 中变量的值决定了变量的数据类型

  • 注意是number不是integer
  • undefine未定义是比较特殊的类型,只有一个值 undefined,只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。

java script 模板 java script编程_java script 模板_04


java script 模板 java script编程_前端_05

<script>
	let temperature = -40; // 负数
	document.write(typeof temperature); // 结果为 number
	
	// 只声明了变量,并末赋值
	let tmp;
	document.write(typeof tmp); // 结果为 undefined
</script>

模板字符串${age}

  • 字符串拼接比较麻烦,直接用模板字符串
  • 模板字符串可以加标签,可以设置样式
<head>
	<style>
		span {
		color: pink;
	</style>
</head>
<body>
	<script>
		let age = 81
		document.write(`我今年<span> ${age + 1} </span>岁了`)
	</script>

</body>

数据类型的转换

  • 为什么要进行数据类型的转化

隐式的转换

java script 模板 java script编程_数组_06


java script 模板 java script编程_javascript_07

  • 一些例子

显示的转换——number

  • 通过 Number 显示转换成数值类型,当转换失败时结果为 NaN(Not a Number)即不是一个数字。
  • parseInt()只保留整数部分、parseFloat()会保留小数
  • Number和parseFloat的区别,前者不成功会NAN,后者只留下数值(所以经常被用于过滤单位)parseFloat(‘100px’)是100,但是前面也有字母则不行了

// 并不是所有的值都可以被转成数值类型
let str = ‘hello’;
// 将 hello 转成数值是不现实的,当无法转换成
// 数值时,得到的结果为 NaN (Not a Number)

显示的转换2_string

  • 通过String(变量),例如,String(10)
  • 通过变量age.toString()
  • 或者变量age.toString(2),括号里面是二进制的意思

表格变量例子

java script 模板 java script编程_javascript_08


java script 模板 java script编程_前端_09


弹窗3个输入数据后随输入数据渲染了这样的表格

java script 模板 java script编程_数组_10

运算符

  • 以后判断要用===,开发常用,要值和类型都一样
  • 还有最好用!==
  • java script 模板 java script编程_前端_11


console.log(5 == ‘5’) // true,只要值一样,不管数据类型
console.log(5 === ‘5’) //false

  • NaN不等于任何值,包括它本身
  • 尽量不要比较小数,因为小数有精度问题,例如 0.1 + 0.2 === 0.3这种false 可能是0.3000000000004
  • 不同类型之间比较会发生隐式转换

逻辑运算符里的短路(中断与否)(5个假的),先算&&后||

  • 逻辑中断原因:通过左边能得到整个式子的结果,因此没必要再判断右边
  • 运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值

特殊的几个为假的:undefine、null、0、false、‘’ 这五个和&&直接不用判断后面 和 ||直接看后面,(nan是非数值,所以不考虑,一般也可以暂且看做false,在if条件里面也是)

当传入的没有参数,一般undefine+undefine=NAN
为了防止这种报错,就用 || 进行一个处理,这样undefine || 0 是0…

java script 模板 java script编程_开发语言_12

先一元运算符,再算逻辑运算符,在逻辑中先算&&,再算||

java script 模板 java script编程_前端_13

表达式和语句

程序三大流程控制语句:顺序、分支(if、三元、swich)、循环

java script 模板 java script编程_开发语言_14

案例——数字补0

java script 模板 java script编程_开发语言_15


其实0也可以不加引号,prompt

java script 模板 java script编程_java script 模板_16

case

简单个值用swich直接找,快。

有范围就用多分支吧

java script 模板 java script编程_java script 模板_17


java script 模板 java script编程_javascript_18

java script 模板 java script编程_数组_19


如果是字符串相应的都要换

java script 模板 java script编程_前端_20

java script 模板 java script编程_开发语言_21

简易计算器

java script 模板 java script编程_开发语言_22

浏览器断点

打了要刷新页面,重新执行,不要了再点去掉即可。

java script 模板 java script编程_数组_23

java script 模板 java script编程_java script 模板_24

循环

continue,直接退出本次循环,不再执行后面的语句,进行下一次循环

break,退出所有循环,结束

java script 模板 java script编程_数组_25

数组操作(增push\unshift删pop\shift\slice改查)

java script 模板 java script编程_数组_26

  • 增push\unshift

let arr = []就初始化定义了一个空数组

1.数组.push() 方法将一个或多个元素添加到数组的末尾并返回该数组的新长度,例如arr.push(‘ewer’,‘rewt’),添加之后是[…,‘ewer’,‘rewt’]
2.arr.unshift(新增的内容) 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度arr.unshift(‘ewer’,‘rewt’),添加之后是[‘ewer’,‘rewt’,…]

  • 删pop\slice(应用场景:抽奖、删除指定商品)

数组. pop() 方法从数组中删除最后一个元素,并返回该元素的值,无参数
数组. shift() 方法从数组中删除第一个元素,并返回该元素的值,无参数
数组. splice(start, delectCount) 方法 删除指定元素,起始位置+删几个(如果delectCount省略则默认从指定的起始位置删除到最后)

shift是删除、unshift就是加

综合案例

java script 模板 java script编程_数组_27

java script 模板 java script编程_开发语言_28

匿名函数

将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式

java script 模板 java script编程_javascript_29


java script 模板 java script编程_数组_30

使用场景(web API中)

java script 模板 java script编程_java script 模板_31

java script 模板 java script编程_前端_32

立即执行函数

场景介绍: 避免全局变量之间的污染,无需调用,立即执行,其实本质已经调用了,多个立即执行函数之间用分号隔开

前面括号是定义,传入的函数是形参,后面的括号是调用执行,里面是实参
第二种形式也是哦,把括号放里面了

java script 模板 java script编程_java script 模板_33

应用场景

java script 模板 java script编程_开发语言_34

案例——时、分、秒

java script 模板 java script编程_javascript_35

java script 模板 java script编程_前端_36


java script 模板 java script编程_javascript_37

参数个数!

java script 模板 java script编程_java script 模板_38

对象

  • 对象的访问
  • 对象的改变,有就改,无就加
  • 对象的遍历
    obj.k是去找属性名为k的

表格渲染数据

  • 表格

java script 模板 java script编程_前端_39


数据是

java script 模板 java script编程_java script 模板_40


先写表头表尾

java script 模板 java script编程_开发语言_41


JS渲染中间部分

java script 模板 java script编程_java script 模板_42

Math内置对象

java script 模板 java script编程_java script 模板_43


round是四舍五入(就近取整,.5的就往大的取,负数也是大的取)

java script 模板 java script编程_数组_44

任意范围随机数

random是包括0不包括1的,注意有个floor

java script 模板 java script编程_开发语言_45

案例——根据数组对象渲染排版

根据数据个数渲染li,使用document.write(``)里面写li

java script 模板 java script编程_前端_46

其他补充JS知识

java script 模板 java script编程_java script 模板_47


java script 模板 java script编程_数组_48

  • 简单数据类型存放在栈里面的是值
  • 引用类型变量(栈空间)里存放的是地址

堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中
的栈;
简单数据类型存放到栈里面
2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
引用数据类型存放到堆里面

java script 模板 java script编程_javascript_49


如果修改其中一个的值,另一个也会变

java script 模板 java script编程_前端_50

补充

a++ 、a-- 、!非、正负号、就是一元运算符(只需要自己运算)

3+4的加号就是二元运算符(需要两个运算符一起参与)

三元运算符(相当于简写的if else)需要三个:条件 ? 满足条件的代码 :不满足条件的代码
还可以 let re = 条件 ? 满足条件的代码 :不满足条件的代码,进行赋值

prompt()的获取输入默认是字符串类型,可以+prompt()获取就是数字类型了,括号里面可以加提示字符串

冒泡排序

java script 模板 java script编程_前端_51

return 只能返回一个值,要么用数组封装

java script 模板 java script编程_开发语言_52