ECMAscript
javascript是什么
javascript 即js是一种轻量级的脚本语言,
是一种面向对象的语言,在浏览器进行解释
js引入方式
内嵌式
<script stype="text/javascript">
js代码
</script>
该script标签可以放在html任何地方
外链式
<script src="js文件路径“></script>
事件引入
<button οnclick="js代码“>按钮
js注释方式
//单行注释
/*
多行注释
*/
js输出方式
在浏览器窗口输出
alert(输出内容);警告框
在网页内部输出
document.write(输出内容);
把内容写入html文档中(body里)
在控制台输出
console.log(输出内容);
以控制台形式输出
数据类型
基本类型
数字 number
字符串 string
布尔类型 boolean
true
false
null 空
空值 。这个值的语义是,希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。
undefined
未定义的值 。这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果 。
符合数据类型
数组
对象
函数
变量
声明变量
ver (变量名);
变量命名规则
变量名必须以字母、下划线、美元符号开头,后面可以是字母下划线、美元符号或数字
变量名区分大小写
变量名不可以用关键字或保留字
变量名最后有含义,见名知意
运算符
赋值运算符 =
把右侧的值附加给左侧的变量
算数运算符
+加号 -减号 *乘号 /除号 %取余
+加号
加法运算
加号两侧同时为数字时
字符串拼接
加号一侧为字符串时
-减
*乘
/除
%取余
符号两侧同时为数字,进行对应算数运算
符号两侧任何一侧为非数字,运算时会把该恻转换为数字进行运算,转换成功进行对应的算数运算,转换失败得到NaN(not aNumber)
num+=1
num-=1
num*=2
num/=2
num%=2
++num
num++
num--
--num
关系运算符
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
===全等
返回值
布尔类型
逻辑运算符
逻辑与 &&
true && true true
true &&false false
false && true false
false && false false
概要
逻辑与两侧同时为true才为true ,有一个false则为false
短路
逻辑与符号左侧为false,结果为false
逻辑与左侧为true ,结果一右侧值为最终值
子主题 3
逻辑或 ||
true || true true
true ||false true
false || true true
false || false false
概要
逻辑或两侧为false则为false ,有一个为true则为true
短路
逻辑或符号左侧为true ,结果为true
逻辑非 !
!true false
!false true
概要
非假即真 ,非真即假
!true true
子主题 3
类型转换
转字符型
1 与空串进行加法运算
+”“ 或 +’‘
2 对于Number类型和Boolean类型来说,
通过to String()方式
let str = value.toString();
注意点: 变量名称.toString是对拷贝的数据进行转换, 所以不会影响到原有的数据;
不能使用常量直接调用toString方法, 因为常量是不能改变的。
.toString无法将undefined、null 转换成 字符串类型。
3. 通过String方法
let str = String(value)
转数字型
1 字符串的数值或布尔值,与0进行减法运算或
与1进行乘法运算
数值 -0或数值*1
2 通过Number()转换为数字类型
Number( )
如果是数字的话,只是进行简单的传入参数和返回
如果是null 返回值是 0
如果是undefined, 返回NaN(not a number)
如果是字符串:
1、如果是空字符串------0
2、如果只包含数字,将其转换为十进制数返回,前面的0被忽略
3、如果字符串中的有效的十六进制数,转换为十进制
4、如果字符串中包含其他的字符-----NaN
通过 parseIent() 转化为整数
parseFloat() 保留小数位
( 字符串,进制)
转布尔值类型
通过 Boolean()方法
var num = 0;
Boolean(num) //false
通过逻辑非运算 !!数值
var num = [];
!![] // true
3、条件语句中自动进行的强制类型转换,如下:
(1)if (..)语句中的条件判断表达式。
(2)for ( .. ; .. ; .. )语句中的条件判断表达式(第二个)。
(3) while (..) 和 do..while(..) 循环中的条件判断表达式。
(4)? :中的条件判断表达式。
(5) 逻辑运算符 ||(逻辑或)和 &&(逻辑与)左边的操作数(作为条件判断表达式)。
概要
null和undefined直接转化为false
字符串:空字符串转化为false,其他全为true
数字:0和NaN转化为false,其他全为true
分支
单分支
if(条件){
语句
}
条件成立(true),执行语句
双分支
if(条件){
语句1
}else{
语句二
}
条件成立(true)执行语句1,条件不成立(false)执行语句2
双分支
if(条件1){
语句1
}else if(条件2){
语句2
else if()可以有多个
}
......
else{
语句3
}
条件1成立(true)执行语句1 否者条件1不成立(false)看条件2是否成立 成立(true)执行条件2 否者(false)看条件3是否成立,...
若上面的都不成立(flase)则执行else后面的语句
switch分支
语法:
switch(表达式){
case 常亮1:
语句1;
break;
case 常亮2:
语句2;
break;
.....
default:
语句;
}
注意事项:
break若不写 ,switch不会停止
循环
while 循环
语法:
while(条件){
语句;
}
特点:先判断在执行
条件为(true)执行语句,
for循环
语法:
for(初始化变量;条件判断;变量更新){
循环操作
}
特点:先判断,在执行
do while
语法:
do{
循环操作;
}while(循环条件)
先执行循环操作,在进行循环条件的判断
循环操作至少执行1遍
跳转语句
break;
通常与条件语句一起使用吗,跳出整个循环,终止循环
continue
继续,指跳出本轮循环,进入下轮循环,加速循环
函数
内置函数
parseInt(字符串类型数值,进制数)
把字符串转化为整数
parseFloat(字符串类型)
把字符串转化为数字(小数,整数)
eval(字符串)
把字符串当做js来执行
isNaN(参数)
判断参数是否是NaN类型(会进行类型转换,)
若果是NaN类型,则返回true,否则返回false
Number.isNaN(参数)
判断参数是否是NaN类型(不会进行类型转换),如果是NaN类型,则返回true,否则返回false
isFinite(参数)
判断参数是否有限数字(会先进行类型转换),
如果是有限数字,则返回true,否则返回false
Number.isFinite(参数)
判断参数是否有限数字(不会进行类型转换),
如果是有限数字,则返回true,否则返回false
自定义函数
声明函数
function 函数名(形参1,形参2,...){
函数体;
return 返回值 ;
}
调用函数
函数名(实参1,实参2,...);
匿名函数
function(){
函数体;
}
var box=function(){}
box();
(function(){})() 自我执行函数
作用域
全局作用域
函数作用域
内置对象
数学对象
属性
Math.PI圆周率
方法
取整
Math.ceil(参数)向上取整
返回一个大于或等于参数的整数
Math.floor(参数) 向下取整
返回一个小与或等于参数的整数
Math.round (参数) 四舍五入
Math.max(x,y,,z...)
返回一组数里的最大值
Math.min(x,y,z...)
返回一组里的最小值
Math.abs(参数)
返回参数的绝对值
Math.pow(x,y)
返回x的y次方
Math.random()
返回0-1之间的一个随机数
日期对象
var mydate = new Date();
获取
mydate.getFullYear()
返回当年年份
mydate.getMonth()
返回值月份对应数字【0,11】
0-->1月份 1-->2月份
mydate.getDate()
返回当前对应日期
mydate.getHours()
当前时间的小时
mydate.getMinutes()
当前时间的分钟
mydate.getSeconds()
返回当前时间的秒数
mydate.getMillidecound()
返回当前时间的毫秒数
mydate.getDay()
返回日期【0-6】
0-->星期1 1-->星期2
mydate.getTime()
返回当前日期距离1970年1月1日的毫秒数
madate.toLocaleString()
返回本地时间字符串格式(年月日 时分秒)
mydate.toLocaleDateString()
返回本地日期字符串格式(年月日)
mydate.toLocaleTimesString()
返回本地时间 字符串格式(上午下午时分秒)
设置
mydate.seFullYear(年份)
把上述get方法修改为set
var d= new
字符串对象
创建
var strObj=new String();
var strObj=“”;
属性
strObj.length返回字符互串的长度
索引号
[0,strObj.length-1]
方法
strObj.indexOf(参数1,参数2)
从参数2位置开始查找参数一子串在整个字符串中第一次的位置
参数
参数1:必须 查找的子串
参数2:可选 开始查找的位置若省略,从
零开始查找
返回值
如果查找的该子串,返回该子串的下标若果查找不到,返回-1
strObj.lastindexOf(参数1,参数2)
从参数0位置开始查找,查找参数1子串在整个字符串中最后一次出现的的位置
strObj.replace(参数1,参数2)
用参数2替换参数1匹配的子串
参数
参数1:必须 被替换的子串或正则表达式(进行全局替换/正则/g)
参数2:必须 用来替换的字符串
返回值
替换后的字符串
strObj.charAt(参数)
通过索引号查找字符
参数
字符串的下标
返回值
下标对应的字符
strObj.charCodeAt(参数)
通过索引号查找字符对应的unicode编码
a-z 97-122
0-9 48-57
A-Z 65-90
String.formCharCode(number)
通过unicode编码找到对应的字符
截取
strObj.substr(参数1,参数2)
从参数1开始截取长度为长度二的子串
参数
参数1:必须 开始截取的位置 可以为负 -1是
倒数第一个字符,-2是倒数第二个字符
参数2:可选 截取长度 若省略,截取字符串的末尾
返回值
截取到的字符串
strObj.substring(参数1,参数2)
从参数1位置开始截取到参数2位置的子串
参数
参数1:必须 开始截取的位置 非负整数
参数2:可选 结束截取的位置 非负整数
若省略,截取字符串的末尾
返回值
截取到的字符串
注意
1. 截取时,包含开始位置,不包含结束微视,截取子串长度=结束位置-开始位置
2.开始位置>结束位置, 截取前,交换位置
3.开始位置==结束位置,截取到的是空串
strObj.slice(参数1,参数2)
从参数2位置开始截取到参数2位置的子串
参数
参数2: 必须 开始截取的位置 可以为负值
参数2:可选结束截取的位置,可以为负若省略,截取字符串末尾
返回值
截取到的字符串
注意
1.截取时,包含开始位置,不包含结束位置,截取子串长度=结束位置-开始位置
2.开始位置>=结束位置截取到的是空串
分割
strObj.split(参数1,参数2)
以参数1位分割符,分割参数2个元素(数组)
参数
参数1:必须 分隔符
参数2:可选 分割的分数若省略,分割分数不限制
返回值
分割的字符组成的数组
其他
去空格
strObj.trimLeft()去除左侧空格
strObj.trimRight()去除右侧空格
strObj.trim()去除左右空格
strObj.search(正则表达式)
查找匹配正则表达式的字符串
返回值:若匹配到,返回第一次屁【匹配的字符串的索引号若匹配不到,返回-1
strObj.match(参数)
参数:字符串或正则表达式
返回值:匹配结果组成的数组或null
strObj.startWith(参数1,参数2)
从参数2的位置开始检索字符串是否以参数1开头
参数1:必须 子串
参数2:可选 开始检索的位置
若省略,从零开始检索
返回值:布尔值
strObj.endwith(参数1,参数2)
从参数2的位置开始检索字符串是否以参数1结尾
参数1:必须 子串
参数2:可选 开始检索的位置
若省略,从零开始检索
返回值:布尔值
atrObj.includes(参数1,参数2)
从参数2的位置开始检索字符串是否含有参数1
参数1:必须 子串
参数2:可选 开始检索的位置
若省略,从零开始检索
返回值:布尔值
数组
数组创建
构造函数
var arr = new Array();
arr[0] = 12;
arr[1]="hello",
var arr = new Array (12);
创建了一个长度为12 的数组
字面量
var arr = []
空数组
var arr = [12,"hello"]
数组访问
数组长度 arrObj.length
下标[0,arr,length-1]
arr[0]
arr[1]
遍历数组
for(var i=0;i<arr.length;i++){
i索引号(下标)
arr[i] 数组元素
}
for(var item of arr){
item 遍历的数组元素
}
不推荐使用for-in遍历数组
fo(var i in arr){
i 属性名
arr[i] 遍历的元素(属性值)
}
数组方法
遍历数组
arrObj.Each(function(item,index,self){
item 遍历出的每一个元素(当前遍历的元素)
index 元素对应的下标
self 数组本身
})
无返回值
映射
arrObj.map(funxtion(item,index,self){
item 遍历出的每一个元素(当前遍历的元素)
index 元素对应的下标
self 数组本身
return 返回值;
})
有返回值
返回值:与原数组有映射关系
过滤
arrObj.filter(funxtion(item,index,self){
return 返回值;
})
返回值:新数组(过滤出满足条件的元素构成的新数组)
有一个为满足条件,返回false,后面不在进行检测,所有元素都满足条件,才返回true
高阶函数
迭代(累加器)
迭代
arr.reduce(function(total,item,index,self){
total 必须 代表初始值或者计算结束的返回值
item 当前元素;
index 当前元素的索引;
self 数组;
return 返回值;
},初始值)
有返回值
返回值:计算后的total值
其他
arrObj.every(function(item){
return 返回值;
});
检测数组里的每一个值是否满足条件,
如果有一个不满足,返回false,剩余的值不在进行检测
如果所有的值都满足,返回true
arrObj.some(function(item){
return 返回值;
});
检测数组里的每一个值是否满足指定条件,
如果有一个满足,返回true,剩余的值不在进行检测
如果所有的值都不满足,返回false
删除
arrObj.pop()
删除数组尾部的最后一个元素
arrObj.shift()
在数组头部删除一个元素
添加
返回值:删除的元素
添加
arrObj.push(元素1,元素2,..)
把元素添加到数组的尾部
arrObj.unshift(元素1,元素2,...)
把元素添加到数组的头部
返回值:新数组的长度
Array.isArray(参数)
判断参数是否是一个数组
是数组返回true,否则返回false
Array.form(参数2,参数2)
返回值:转换成功的新数组
参数1:必须 带转换对象
参数2; 可选 数组中每个元素要调用的函数
排序
arrObj.sort(参数)
数组中的元素排序
参数:可选 函数,来定义数值的排列顺序,若省略,按照unicode编码排序
参数 函数
函数里的形参的相对顺序决定数组的排列顺序
arrObj.sort(function(a,b){
return a-b; 按照升序排序
return b-a; 按照降序排序
})
返回值:排序后的数组
arrObj.reverse()
颠倒数组
返回值:颠倒后的数组
连接
arrObj.concat(参数)
数组连接
参数:必须 要连接的数组或元素 多个数组或元素之间用逗号隔开
返回值:连接后的数组
转字符串
arrObj.join(参数)
参数 可选 ,为分割符号若省略,默认为逗号隔开
返回字符串
内置对象
创建
var obj = new Object();
obj.属性名 = 属性值;
obj["属性名"] = 属性值;
var obj= {};空对象
var obj = {
属性名 : 属性值
...
方法名:function(){
this--->obj
}
};
访问对象
obj.属性名 或
obj["属性名"]
for(var key in obj){
key 属性名
obj[key] 属性值
}
其他
“属性名” in obj
用来判断在obj里是否含有某个属性
返回值 : true/false
如果含有某个属性,返回true,否则返回false
delete obj.属性名
删除obj对象里某个属性
json
javaScript Object Notation
js的对象表示法
是一种数据交换格式
json解析
把字符串转化为json对象
JSON.paese(字符串)反序列化
把json对象转化为字符串
JSON.string
排序
冒泡排序
1.比较相邻的元素。如果第一个比第二个大,就
交换他们两个。
2.对每一对相邻的元素做同样的工作,开始第一对到结尾的最后一对。在这一点,最后的元素应该是最大数。
3.针对所有的元素重复以上的步骤,除了最后一个
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。