API是指应用程序编程接口 js下指提供好的函数或者方法
一、数组API
toString():
reverse() 翻转数组中的元素
sort() 对数组进行排序,默认按照编码排序
sort(function(a,b){ return a-b;//按照数字从小到大排列 // return b-a; //按照数字从大到小排列 }) |
如何学习API:API的作用、有哪些参数、哪些参数可选,哪些参数必选,返回结果是什么
concat(arr2,arr3...) 拼接多个数组,arr2,arr3表示要拼接的数组,返回拼接后的数组
slice(start,end) 截取数组元素,start开始的下标,end结束的下标,不包含end本身;如果下标是负数表示倒数,返回截取的元素,格式为数组。
练习:创建数组包含a~f,每个字母是一个元素;分别截取bc,ef;最后将这两组数组拼接成一个新的数组。
var arr = ['a','b','c','d','e','f'];
//截取字符
var str1 = arr.slice(1,3);
var str2 = arr.slice(4);
console.log(str1,str2);
//拼接字符
var str3 = str1.concat(str2);
console.log(str3);
Splice(start,count,v1,v2...) 删除数组中的元素,start开始下标,count(可以为0,即直接添加元素),删除的数量,count为空删除到最后,下标是负数表示倒数;v1,v2...表示删除后补充的元素,返回删除的元素,原数组会发生变化
练习:创建数组包含a~h,删除cd,替换f为m,在下标为1的位置插入z
//练习:创建数组包含a~h,删除cd,替换f为m,在下标为1的位置插入z
var arr = ['a','b','c','d','e','f','g','h']
console.log( arr.splice(2,2));
console.log(arr.splice(-3,1,'m'));
console.log(arr.splice(1,0,'z'));
console.log(arr);
indexOf() 查找数组中是否含有某个元素,返回找到的第一个下标,如果找不到返回-1
push() 往数组的末尾添加元素,返回数组的长度
pop() 删除数组末尾的一个元素,返回删除的元素
unshift() 往数组的开头添加元素,返回数组的长度
shift() 删除数组开头的一个元素,返回删除的元素
二、二维数组
用于对一组数据进行二次分类
【【元素1,元素2】,【】,【】,...】
访问:数组【下标】【下标】
三、字符串对象
包装对象目的是为了让原始类数据像引用类型数据,具有属性和方法,一共有三种包装对象:String、 Number 、 Boolean
new String() 将数据转为字符串,返回对象
String() 将数据转为字符串,返回字符串
1、转义字符 \
\' 将特殊意义的引号转义为普通引号
\n 将普通的字符n转义为换行符
\t 将普通的字符t转义为制表符(tab键效果)
练习:打印出‘c:\users\web’
//练习:打印出‘c:\users\web’
var str4 = 'c:\\users\\web';
console.log(str4)
2、API
length 获取字符串长度
charAt(下标) 获取下标对应的字符,也可以使用数组形式,字符串【下标】
面试题:统计一个字符串中出现做多的字符串及次数:
练习:声明变量保存字符串‘javaScript’,遍历字符串,统计出a字符出现的次数
//练习:声明变量保存字符串‘javaScript’,遍历字符串,统计出a字符出现的次数
var str = 'javascript';
//遍历字符串
for(var i = 0, count = 0; i<str.length; i++){
//判断任意一个字符是否为a
if(str[i] === 'a'){
count ++;
}
//console.log(str[i]);
};
console.log(count);
indexOf() 查看是否含有某个字符串,返回第一次出现的下标,找不到返回-1
lastIndexOf() 查看是否含有某个字符串,返回最后一次出现的下标,找不到返回-1
练习:声明变量保存用户输入的邮箱,如果邮箱中不含有@,打印‘邮箱格式错误’,否则打印‘邮箱格式正确’
//练习:声明变量保存用户输入的邮箱,如果邮箱中不含有@,打印‘邮箱格式错误’,否则打印‘邮箱格式正确’
var str = 'tao123@tedu.cn';
//判断是否含有@字符串
if(str . indexOf('@') === -1){
console.log('邮箱格式错误');
}else{
console.log('邮箱格式正确');
}
slice(start,end) 截取字符串,start开始的下标,end结束的下标,不包含end,如果end为空会截取到最后,如果是负数表示倒数,返回截取到的字符串
//练习:声明变量保存邮箱,分别截取出邮箱的用户名和域名 tao123@tedu.cn
//练习:声明变量保存邮箱,分别截取出邮箱的用户名和域名
var email = 'tao123@tedu.cn';
//先查找@字符的下标
var index = email.indexOf('@');
console.log(index);
var username = email.slice(0,index);
var domain = email.slice(index+1);
console.log(username,domain);
substr(start,count)按照长度截取字符串,start开始的下标,count截取的长度,如果count为空截取到最后,如果下标是负数表示倒数,返回截取到的字符串
练习:声明变量保存一个人的身份证号,分别截取生日中的年月日和性别,
最后打印格式:xxxx年xx月xx日 性别x
110235197307151870
//练习:声明变量保存一个人的身份证号,分别截取生日中的年月日和性别,
//最后打印格式:xxxx年xx月xx日 性别x
// 110235197307151870
var id = '110235197307151870'
var year = id.substr(6,4);
var month = id.substr(10,2);
var day = id.substr(12,2);
var sex = id.substr(-2,1);
//判断性别
var s = sex%2 === 1 ? '男' : '女';
console.log(year + '年' + month +'月' + day + '日'+ ' ' + '性别' + s )
toUpperCase() 英文字母转大写
toLowerCase() 英文字母转小写
split (字符) 将字符串按照指定的字符分割为数组
练习:上传文件——1.jpg -> .jpg
截取文件名称的后缀名 web.2014.tao.jpg
//截取文件名称的后缀名 web.2014.tao.jpg
var str = 'web.2014.tao.jpg'
var arr = str.split('.');
console.log(arr);
//打印最后一个元素
console.log(arr[arr.length-1]);
三、Math对象
不需要new来创建对象,可以直接使用对象下的API
PI: 获取圆周率
abs() 获取绝对值
ceil() 向上取整
floor()向下取整
round() 四舍五入取整
random()获取随机,范围 >=0 <1
pow(x, y) 计算x的y次方
max() 获取一组数字的最大值
min() 获取一组数字的最小值
课后任务:
(1)复习,思维导图
(2)练习:
将一句英文中每个单词的首字母大写,其余字母小写
hOw aRe yOU -> How Are You
//将一句英文中每个单词的首字母大写,其余字母小写
//hOw aRe yOU -> How Are You
var str = 'hOw aRe yOU'
//将字符串按照空格字符分割为数组
var arr = str.split(' ');
//console.log(arr)
//循环遍历数组
for(var i = 0; i < arr.length; i++){
//截取数组首字母转大写
var s = arr[i].slice(0,1).toUpperCase();
//截取数组剩余字母转小写
var o = arr[i].slice(1).toLowerCase();
//重新拼接
arr[i] = (s+o);
}
console.log(arr.join(' '));
随机获取a~z之间的四个字母 放到一个新数组
格式:【‘b’,'c','z','t'】
(3)预习js第九天,重点Date对象
双色球
红球:在1~33之间随机取6个,不能重复,放入到数组,进行从小到大的排序
蓝球:在1~16之间随机取1个,这个数字可以和之前的红球重复,放入到数组
[2 ,3, 9, 20, 30, 33, 9]
四、Date对象
用于对日期时间的存储和计算
(1)创建
new Date('2021/5/18 10:27:30')
new Date(2021,4,18,10,27,30) 月份0~11 对应1月~12月
new Date() 存储当前操作系统的时间
new Date(1608336000000) 存储的是距离计算机元年的毫秒数,会产生一个具体的日期时间
计算机元年:0时区1970-1-1 0:0:0
(2)获取存储的日期时间
getFullYear/getMonth/getDate
获取的月份0~11 对应1~12月
getHours/getMinutes/getSeconds/getMilliseconds毫秒
getDay 获取星期 0~6 对应星期日~星期六
getTime 获取距离计算机元年的毫秒数
练习:创建Date对象,保存当前操作系统的时间,获取日期时间,打印以下格式 今天是xxxx年xx月xx日 xx时xx分xx秒 星期二
(3)转为本地字符串格式
存在兼容性问题,常用于调试
toLocaleString() 日期+时间
toLocaleDateString() 日期
toLocaleTimeString() 时间
(4)设置日期时间
修改Date对象中存储的日期时间
setFullYear/setMonth/setDate
月份1~12 对应的值 0~11
setHours/setMinutes/setSeconds/setMilliseconds
setTime 设置距离计算机元年的毫秒数,产生一个具体的日期
(5)拷贝Date对象
var d1 = new Date();
var d2 = new Date(d1); //拷贝d1对象
练习:创建Date对象,保存'2020/5/20',作为入职时间;拷贝入职时间的对象作为到期时间,设置合同期为3年(3年后);分别打印两个对象的本地字符串格式。
五、Number对象
new Number() 将数据转为数值,返回对象
Number() 将数据转为数值,返回数值
toFixed(n) 保留小数点后n位
toString(n) 将数值转为字符串,可以设置显示的进制
六、Boolean对象
new Boolean() 将数据转为布尔型,返回对象
Boolean() 将数据转为布尔型,返回布尔型
!! 隐式转换为布尔型
!!null -> false
七、错误处理
(1)常见的错误
语法错误(SyntaxError):不符合语法规范,例如出现中文的符号,缺少半块括号
引用错误(ReferenceError):使用了未声明的变量
类型错误(TypeError):把一个非函数当做函数调用
范围错误(RangeError):数据的使用超出了JS的规定范围
自定义错误:程序员自己制定的错误
throw 错误内容
(2)错误处理
在运行过程中产生的错误,不再影响后续代码的执行
try{ 尝试执行,可能产生错误,一旦产生会被catch捕获 }catch(err){ 将错误信息放入到err中,不再影响后续代码执行 进行错误处理 } |
课后任务
(1)复习今天内容,整理思维导图
(2)练习
创建函数,传递任意一个日期,返回这一天是一年中的第几天
例如 getDays(2021,5,18)
(3)预习nodejs第一天
八、ES6
ECMA -> ECMAScript -> ES
标准规范
ES6 js的第6套标准规范
ES7 ES8 ...
ES2015 ES2016 ES2017
https://nodejs.org/download/release/v12.22.1/node-v12.22.1-x64.msi
(1)块级作用域
let a = 1;
let 声明的变量不存在提升,在同一个作用域下,不允许重复声明同一个变量
大括号之间的语句块就是一个块级作用域,例如if、else、while、do-while、for...在块级作用域下,let和const声明的都是局部的
var let const 三个区别 |
var 声明的变量存在提升,在同一个作用域下可以重复声明同一个变量 let 声明的变量不存在提升,在同一个作用域下不允许重复声明同一个变量,存在块级作用域,即使在全局作用域下let声明的变量 也不是全局的 const 声明变量的时候必须赋值,不允许重新赋值,存在块级作用域 |
练习:计算1~100之间所有整数的和,使用 let声明变量
//练习:计算1~100之间所有整数的和,使用 let声明变量
let sum = 0;
for(let i = 1; i <= 100; i++){
sum += i;
}
console.log(sum);
(2)参数增强
可以给函数的参数设置默认值
function fn(a, b, c = 0){ //c = c || 0; //es6之前设置默认值的方式 } fn(10000,2000) //没有出现的实参就会使用默认值 |
(3)箭头函数:()=>{ }
简化匿名函数写法0,不等价于匿名函数
sort((a,b)=>{ return a - b; }) |
如果箭头函数的函数体中只有一行代码并且是return形式,可以简化为sort((a,b)=> a-b);
练习:使用函数表达式创建函数,将之前的匿名函数使用箭头函数,计算任意3个数字的平均值并返回结果。
(4)模板字符串
`模板字符串:${js表达式}`
练习:声明变量保存一条员工数据,格式为对象,包含的属性有编号,姓名,性别(1/0),工资,最后打印以下格式
编号:X
姓名:xx
性别:男/女
工资:xxxx.00元