目录
一、JavaScript基础
JavaScript 一种运行在客户端的脚本语言
1、作用:
- 表单动态校验(密码强度检测)(JS产生最初的目的 )
- 网页特效
- 服务端开发(Node.js)
- 桌面程序(Electron)
- App(Cordova)
- 控制硬件-物联网(Ruff)
- 游戏开发(cocos2d-js)
2、JS 的组成
- ECMAScript
- DOM——文档对象模型
- BOM——浏览器对象模型
3、JS 编写位置
- 行内式
开始标签内,把事件和js代码耦合在一起
<input type="button" value="点我试试" onclick="alert('Hello World')" />
- 内嵌式(常用)
标签 script 内
<script>
alert('大家好才是真的好!');
</script>
- 外部JS文件
js文件内,然后引入到html文件里
<script src="index.js"></script>
4、变量(variable)
简单来说就是存储数据值的容器,也可以说它是一个装东西的盒子。变量的初始化,即声明变量并赋值。
变量命名规范:
- 由字母(A-Za-z)、数字(0-9)、下划线(_)、美元符号( $ )组成,如:usrAge, num01, _name;
- 严格区分大小写;var app; 和 var App; 是两个变量;
- 不能以数字开头;18age 是错误的;
- 不能是关键字、保留字;例如:var、for、while;
- 变量名必须有意义;
- 遵守驼峰命名法;首字母小写,后面单词的首字母需要大写。
5、数据类型
- 数字型 Number 数字类型既可以保存整数,也可以保存小数(浮点数)
- 字符串型 String 转义符 \n 换行符
- 布尔型 Boolean
- Undefined
- Null
typeof 可用来获取检测变量的数据类型
6、数据类型转换
- 转换为字符串类型
- toString( )
- String( ) 强制转换
- 加号拼接字符串(隐式转换)(常用)
- 转换为数字型(重点)
- parseInt
- parseFloat
- Number强制装换
- 隐式转换(+ - * /)是我们在进行算数运算的时候,JS自动转换了数据类型
- 转换为布尔型
Boolean( )函数
7、其他
1.字面量
字面量无法更改,一般不会直接用。
2.标识符
在JS中,程序员自己命名的内容都是标识符。
- 由数字、字母、下划线和$组成;
- 不可用数字开头;
- 命名必须有意义;
- 标识符不能是关键字或保留字。
3.关键字:是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with 等
4.保留字:实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
包括:boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile 等
二、JavaScript操作符(运算符operator)
1、四则运算符(二元运算符)
+ - * / :如果加号两边都是数字,就会进行四则运算;如果加号两边有一个或两个都是字符串,那么就会进行字符串拼接。
浮点数的精度问题
- 浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数
- 不要直接判断两个浮点数是否相等
2、递增和递减运算符(一元运算符)
- 前置型:先计算再赋值;++ -- 写在变量后面,变量先进行其他运算,再执行自增/自减操作
- 后置型:先赋值再计算;++ -- 写在变量前面,变量先进行自增自减操作,再参与其他运算
3、赋值运算符(二元运算符)
- =:将运算符右边的值直接赋值给左边的变量
- +=、-=:加、减一个数后再赋值
- *=、/=、%=:乘、除、取余后再赋值
4、比较运算符
>、<、>=、<=、==、!=、===、!==
==:只比较值
===:除了比较值,还比较数据类型
都会有一个结果,可以使用变量保存这个结果,结果是布尔类型的数据
5、逻辑运算符(二元运算符)
- && 与运算(且)
规则:只有两个变量都是 true 时,结果才为 true;只要有一个 false,那结果就是 false。
- || 或运算(或)
规则:只有两个变量都是 false 时,结果才为false;只要有一个 true,结果就是 true。
- 逻辑非 !
也叫作取反运算符(一元运算符),用来取一个布尔值相反的值,如 true 的相反值是 false:
var isok = !true;
console.log(isok); // false
- 短路运算(逻辑中断)
原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
三、JavaScript流程控制和循环
1、流程控制
- if 语句
// 条件成立执行代码,否则什么也不做
if (条件表达式) {
// 条件成立执行的代码语句
}
- if else 语句(双分支语句)
// 条件成立 执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
// [如果] 条件成立执行的代码
} else {
// [否则] 执行的代码
}
- if else if 语句(多分支语句)
// 适合于检查多重条件。
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else if (条件表达式3) {
语句3;
....
} else {
// 上述条件都不成立执行此处代码
}
- switch 分支流程控制
switch( 表达式 ){
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
注意: 执行 case 里面的语句时,如果没有 break,则继续执行下一个 case 里面的语句
2、循环
- for
当循环的次数确定,知道执行次数的时候用
for(初始化变量; 条件表达式; 操作表达式){
// 循环体;
}
- for循环嵌套
for (外循环的初始; 外循环的条件; 外循环的操作表达式) {
for (内循环的初始; 内循环的条件; 内循环的操作表达式) {
需执行的代码;
}
}
- while
当循环次数不确定,不知道具体执行次数时,while 方法使用起来更加方便,更加好理解
while (条件表达式) {
// 执行循环体代码
}
- do while
先执行一次循环体,再判断,do while 循环语句至少会执行一次循环体代码
do {
// 循环体代码 - 条件表达式为 true 时重复执行循环体代码
} while(条件表达式);
注意:break 是结束整个循环体,continue 是结束单次循环。
四、数组
数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素;数组是一种将一组数据存储在单个变量名下的优雅方式。
1、创建数组
- 利用 new 创建数组
var 数组名 = new Array() ;
- 利用数组字面量创建数组
var 数组名 = [];
2、访问数组
索引 (下标) :用来访问数组元素的序号(数组下标从 0 开始);
数组可以通过索引来访问、设置、修改对应的数组元素,可以通过“数组名[索引号]”的形式来获取数组中的元素。
3、遍历数组
通过 for 循环索引遍历数组
4、数组长度
“数组名.length”可以访问数组长度
5、新增元素
- 组[ 数组.length ] = 新数据;
- 修改数组索引号追加数组元素
6、冒泡排序
一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或从大到小)
数组示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数组</title>
<script>
var arr = [20, 18, 30, 21, 23, 24, 22, 32, 35];
var newArr = []; // 初始newArr.length 为 0
var sum = 0;
var aver = 0;
var max = arr[0];
var str = '';
var symbol = '|';
// var k = 0;
console.log('数组长度是:' + arr.length);
for (var i = 0; i < arr.length; i++) {
// i是计数器,当索引号用,arr[i]是数组元素的第i个数组元素
sum += arr[i];
str += arr[i] + symbol;
console.log(arr[i]); // 遍历
if (arr[i] > 20) {
newArr[newArr.length] = arr[i];
// k++;
}
}
aver = sum / arr.length;
console.log('数组的和:' + sum, '数组的平均值:' + aver);
console.log(str);
console.log(newArr); // 筛选数组
for (var j = 1; j < arr.length; j++) {
if (arr[j] > max) {
max = arr[j];
}
}
console.log('数组最大值为:' + max);
// 翻转数组
var arr0 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var newArr0 = [];
for (var l = arr0.length - 1; l >= 0; l--) {
newArr0[newArr0.length] = arr0[l];
}
console.log(arr0);
console.log(newArr0);
// 冒泡排序
var arr = [220, 190, 140, 160, 150, 180, 170, 50, 150, 88, 108];
for (var i = 0; i <= arr.length - 1; i++) {
for (var j = 0; j <= arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) { // 从大到小
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
</script>
</head>
<body>
</body>
</html>