1.变量
在js中 通常以 var 来声明
可以用来存储数据
可以更改
var a = 0;
2.常见的输出方式
1. document.write();
将节点直接写入body标签中(也叫文档)
2. console.log();
控制台 输出语句(将目标输出到浏览器console里面)
可以正常翻译
3. alert();
弹出框语句
3.运算符
3.1 算数运算符
+ - * / %
%:取余 直接获取到除不尽的 余数
3.2 关系运算符
< > <= >=
== : 等于号 用来判断 值是否相等
=== :全等好 判断值和数据类型是否都相等
!= :不等 判断值是否不相等
!== :全不等 判断值和数据类型是否都不相等
3.3 逻辑运算符
&& :且 必须两边判断条件 必须都成立结果才为true
|| :或 符号两边的判断 条件任意一个成立 结果为true
!= : 非 取反 当判断 条件为true的时候 取反为false 结果为true 结果为false 反之为true;
4.基础数据类型
4.1 数字 number
可以进行算数运算 +号 为两个数相加
4.2 字符串 String
有双引号 或者单引号包起来的字符就是字符串
在es6中 有字符串的新写法 ------- 模板字符串 ``
模板 字符串 特点 : 方便 快捷 可以换行
不用 字符串拼接
变量的解析 使用 ${}; es6的特性
字符串拼接 使用+号 来拼接两个字符串
4.3 布尔 Boolean
true和false
是一个特殊的数据类型
相当于是一个被动属性 其他数据类型的数据 基本上都有布尔值
数字0:false
Undefind : false
Null :flase
NaN :false
非0的数字 :true
字符串 true
(只要一个变量里面有只且值不是false 则它的布尔值都是true)
4.4 数组 Array
数组通常有[]所包含
里面的元素由,分隔开
每个元素都有其相对应的索引值(下标)
索引值是由0开始 按顺序依次递增的 正整数
当数组中的元素被删的掉的时候 索引值不会被删 而是由下一 个元素 补上
4.5 对象 Object
对象由{}包含
里面的数据一键值对的形式存在
var ohbj = {
"name":"张三",
"age": 18,
"sex":"男"
}
数据都是以,号隔开
冒号前面叫键 通常是以自符串的形式存在(这里的变量不用声明)
冒号和面叫值 可以是任意数据类型的数据
对象中有一种特殊的对象 叫JSON对象
var json = {
"school":[
{
"name":"蓝鸥1",
"time":"20年",
},
{
"name":"蓝鸥2",
"time":"18年",
}
],
"class":[{
"html":4,
"lava":5
}]
}
4.6 Undefined 特殊数据类型
4.7 null 特殊数据类型;
- 数组
5.1 数组的声明方式
5.1.1 构造函数
var arr = new Array();
可以声明一个指定长度的空数组 var arr = new Array(10);
也可以声明含有具体元素的素组 var arr = new Array[1,2,3,4,5];
注意 元素数量必须 大于等于2
5.1.2 字面量
var arr =[1,2,3,4,5];
5.2 获取数组中的元素
以数组名[索引值]的形式 来精准获取数组中的元素
要想获取数组中的每一个元素 就得使用for循环
5.3 数组的属性
length属性 arr.length
直接获取到数组长度 (数组的长度就是数组中元素的个数)
5.4 数组的操作方法*****
5.4.1 push()末尾添加
var a = [1,2,3,4];
a.push(5);//1,2,3,4,5
向数组末尾添加一个元素 并返回新数组的长度
5.4.2 pop() 末尾删除
var a = [1,2,3,4];
a.pop();//1,2,3
将数组末尾删除一个元素 并返回删除的哪个元素
5.4.3 unshift()首位添加
var a = [1,2,3,4,5]
a.unshift(7);//1,2,3,4,5,7
向数组开头添加一个元素 并返回新数组的长度
5.4.4 shift() 首位删除
var a = [1,2,3,4];
a.shift();// 2 3 4
将数组的第一个元素删除 并返回被删除的哪个元素
5.4.5 splice(index,homeMany,item)定向 添加或者删除
三个参数:
index 添加 或 的删除的元素位置[索引值]
添加或删除多个元素的时候 index就是起始位置
nomeMany 删除的数量 不删除就写0
item:需要添加得元素 可以是多个
添加多个元素 以,隔开
不添加的时候 就不写
添加和删除可以同时进行 但是仅限同位置的添加和栅除
返回值:
删除的时候会将删除的元素 以数组的形式返回出来
添加的时候 只返回 空数组
5.4.6 concat()拼接两个数组
var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b)
将两个数组合成一个数组
哪个数组使用 concat()拼接的时候 哪个数组就在前面
不会改变原有的素组
会将新合成的数组以返回值的方式返回回来
5..7 join() 将数组转成字符串
var a = [1,2,3,4,5];
a.join()//结果 1,2,3,4,5
a.join('')// 1 2 3 4 5
a.join('-')// 1-2-3-4-5
console.log(typeof(a));//查看数据类型
在不设置 的情况下 会将数组转成字符串 并默认元素以逗号隔开
在设置的情况下
设置什么 转成字符串后 就以什么隔开元素
如果设置为空字符串 "" 则不隔开元素
不会改变原数组 而是将转换 号的字符串 以返回值的方式返回
5.4.8 indexOf() 在数组中 查找元素 如果能找到 返回目标元素的索引值 当目标元素在数组中存在多个的时候 从左往后返回第一个目标的索引值
如果没有返回-1;
var arr = [5,4,3,2,1];
var a = arr.indexOf(3);// 查找数组有没有3 返回过来的是索引值 2
var b = arr.indexOf(9)//返回 -1;
5.5 多维数组
当数组中的元素还是数组的时候 他就是多维数组
var a =[1,2,3,4]
一维数组 数组中的元素 不是数组
var b = [1,2,3,[4,5,6]]
二维数组 数组中的元素是一维数组
var c = [1,2,3,4,[1,2,3,4,5,[7,8,9,6]]]
三维数组 数组中的二维数组
以次类推
分支语句
1.if...else
if(判断条件1){
符合判断条件1后执行的代码
} esle if(判断条件2){
不符合 判断条件1
但符合判断条件2时 执行的代码
注意! else if 可以有多个
当else if有多个的时候 按顺序判断其是否符合判断条件
} else{
else 没有判断条件
当 if 所有else if 的判断条件都不满足时
执行 else 中的代码
else 可以不写
}
判断条件可以是条件 语句
也可以是变量
当是变量的时候 则会根据变量 的布尔值进行判断
2 switch...case
switch(变量){
case 常量值1:
当变量 = 常量值1 时执行的代码
break;
case 常量值2:
当变量 = 常量值2 时执行的代码
break;
.
.
.
default;
当变量不等于 所有的常量值是 执行的代码
}
循环语句
7.1 while循环
var i = 0;
while(i<10){
console.log(i);
i++;
}
7.2 do...while
do{
执行的代码
}
whlie(判断条件);
var i = 0;
do{
console.log(i);
i++;
}
while(i<10);
7.3 for循环
for(声明变量并赋予初始值;对变量进行条件判断;变量的自增或自减){
当变量满足判断条件时 执行的代码
如果变量不满足条件 则不执行代码 并跳出循环
}
for循环的执行顺序
对变量进行判断=》满足条件 执行代码=》变量自增/自减 =》对变量进行判断=》。。。。。
如此类循环 直到变量不满足条件 则终止循环
8.字符串 和数值之间的转换
8.1 给字符串数字 1 =》 "2"1
做乘法运算时 系统会强制将字符串转化成数字
8.2 parseInt
将小数转化为整数(直接舍去小数部位)
能将字符串数字转化为数字
8.3 将数字转换为字符串的时候 只需要给数字拼一个字符串""就行
注意: 将字符串转化为数字的时候
"123"=>123
"123qwe"=>123
"qew123"=>NaN
随机一组数据 然后使用冒泡排序
var num = [];
for(var i =0; i<10;i++){
num[i] = Math.round(Math.random()*100);
//console.log(num); 打印
}
for(var i =0; i<num.length;i++){
//外层for是整体循环的次数 i代表当前循环的第几次
//外层循for每循环一周 就能确定出一个当前的最大元素
for(var j = 0; j<num.length-i-1;j++){
//内层for循环 负责元素之间两两对比
//由于外层每循环一周 就能确定出一个最大的元素
//所以 内层 for循环次数是 arr.length - i - 1
//减1 是因为它不可能和自己做对比
//让相邻的元素对比
if(num[j]>num[j+1]){
//如果前一个元素 大于后一个元素
//则将他们位置互换
//位置互换 其实就是指的互换
var temp = num[j];
num[j] = num[j+1];
num[j+1] = temp
}
}
}
console.log(num);
选择排序
//选择排序原理
//每一圈确定一个 当前最小的元素 然后跟最前面放入元素 交换位置
//已将 比较 出来的最小元素 不在参与后面的循环
//比如 第一圈确定出来 跟第一 位交换位置
//第二圈 确定出来放入跟第二位交换位置
//外圈负责整个数组 比较的次数
//内圈负责每个元素的比较
//内圈比较的是起始位置
//i=>0 1 2...
//j=>1 2 3...
//所以内圈循环的起始位置j = i+1
//内圈的结束位置
//由于内圈循环时 每次都要对比最后一个元素 所以 j<arr.length
var num = [];
for(var i = 0; i<10;i++){
num[i]= Math.round(Math.random()*100);
}
//排序 外圈控制住整个数组循环的次数
for(var i = 0; i < num.length -1;i++){
var min = i; //外圈 每一次开始循环的时候 都将当前循环的定一元素 先假设为最小的元素 然后拿这个元素跟内圈循环的其他元素做对比
//如果有元素比min小
//那么 这个元素就是新的min
for(var j = i+1; j<num.length;j++){
if(num[j]<num[min]){
//当J小于num[min]时 min = j 意思是 j的元素 小就输了 就把min = j;
}
}
//因为一整圈比完之后才会换位置 做一年 在外层for循环才会换位置
//将确定出来的min跟 当前参与循环的第一个元素 换位置
var temp = num[i];
num[i] = num[min];
num[min] = temp
}
console.log(num);
插入排序
var arr = [];
for(var i =0; i<10; i++){
aa[i] = Math.round(Math.random()*100);
}
//从第二个元素开始比较(从第二个元素开始到最后结束)
//每次比较都是跟排在子级前面的元素进行比较
for(var i = 1; i<arr.length; i++){
//从第二个元素 开始比较到最后一个元素比较
//将当前元素和自己面前的元素进行比较
//比如说 循环 第一次的时候 是第二个元素 所以 它就是要跟第一 个元素进行比较
for(var j = i; j>0;j--){
//内层 循环 是从当前对比的元素开始 向左进行比较
//所以 内层循环的起始位置 应该是当前元素的位置
//因为要向左开始比较 所以 应该是递减 j--
//在没有遇到比他还小的元素 当前比较 应该一直进行 第一个元素 才结束(j<0)
//开始比较
if(arr[j]<arr[j-1]){
//如果当前元素前一个元素小
var max = arr[j-1];
arr[j-1] = arr[j];
arr[j]=max;
}else{
break;//如果前一个元素比当前元素小 结束循环
}
}
}
console.log(arr);
while循环
//while循环
//输出 0 -10
var i = 0;
while(i<=10){
console.log(i);
i++;
}