javasript
文章目录
- javasript
- 1.学习一门编程语言的基本步骤
- 2.概述
- 3.搭建JS开发环境
- 4.JS语法规范
- 5.变量
- 6.常量
- **小练习**:
- 7.数据类型
- 8.数据类型转换
- 9.运算符和表达式
- 小练习:
- 10.运算符——三目运算符
- 11.两个浏览器端函数
- 12.流程控制
- 13.循环执行
- 小练习
- 14.break关键字
- 15.do-while循环
- 16.for循环
- 17.break和continue
- 18.循环嵌套
- 小练习
- 19.函数
- 20.作用域
- 21.递归(了解)
- 22.匿名函数
- 23.全局函数
- 24.对象
- 小练习:
- 25.数组
- 小练习
- 26.数组API
- 27.二维数组
- 28.字符串对象
- 29.匹配模式(了解)
- 小练习:
- 30.Math对象
- 31.通过Unicode码获取对应字符
- 32.Date对象
- 33.Number对象
- 34.Boolean对象
- 35.ES6
- 小练习
- 33.Number对象
- 34.Boolean对象
- 35.ES6
- 小练习
1.学习一门编程语言的基本步骤
(1)了解背景知识:历史、现状、特点、应用场景
(2)搭建开发环境:编写hello world
(3)变量和常量
(4)数据类型
(5)运算符
(6)逻辑结构
(7)通用小程序
(8)函数和对象
(9)第三方库、框架
(10)实用的项目
2.概述
(1)发展历史
1995年,JS最早出现在netscape浏览器中
2009年,JS遵循CommonJS规范,开始向服务器端发展
(2)特点
弱类型语言
解释型语言,编译一行、执行一行
跨平台
基于对象
(3)应用领域
网页中的交互效果
移动App
web服务器
3.搭建JS开发环境
浏览器中,内置的JS解释器
服务器中,需要安装NODEJS
https://nodejs.org NODEJS官网
运行方式
(1)NODEJS下
创建js文件
node c:/xampp/..../02.js
(2)浏览器下
创建js文件
创建html文件
<script src="02.js"></script>
双击打开html
4.JS语法规范
(1)区分大小写
(2)每行结束的分号可加可不加,习惯上都加
(3)分为单行注释(//…)和多行注释(/…/)
5.变量
变量就是用于存储数据的容器
x=1 y=2
(1)声明变量
使用关键字 var
var x=1;
练习:声明多个变量,分别存储员工的编号、姓名、性别、生日、工资、部门编号。
(2)变量的命名规则
可以使用字母、美元符号、下划线、数字,不能以数字开头。
不能使用关键字和保留字作为变量名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPiMTNTS-1570618005662)(E:\学习\studayNotes\Javascript\wps1.jpg)]
userName isOnsale 驼峰命名
user_name is_onsale 下划线命名
(3)一次声明多个变量
var chinese=90,math=95;
多个变量之间用逗号隔开。
(4)声明变量未赋值
var a;
a的值为undefined(未定义)
6.常量
一旦声明不能再重新赋值。
例如:圆周率、春节、中秋节...
const pi=3.14;
练习:使用变量存储半径,使用常量存储圆周率,计算圆的面积和周长。
关键字:const
小练习:
使用变量保存圆的半径为5,常量保存圆周为3.14,分别计算30度/60度的周长。
使用变量保存商品1的单价12.5和数量7,商品2的单价18,数量3.5,计算商品的总价。
7.数据类型
原始类型————引用类型
原始类型分为数值型、字符串型、布尔型、未定义型(undefined)、null
(1)数值型
分为整型和浮点型
整型在内存占4个字节,浮点型占8个字节
整型分为8进制(0开头)、10进制、16进制(0x开头)
浮点型分为指数型和普通
2.147e9
(2)字符串类型
数据被引号所包含就是字符串类型,不区分单双引号。
查看某一个字符的Unicode编码
console.log( 't'.charCodeAt());
(3)布尔型
在程序中表示真或者假
true/false
常用于一些是否的结果
isVip、 isOnsale、isLogin
(4)未定义型
声明了一个变量,未赋值结果是undefined
(5)空(null)
用于引用数据类型
检测数据类型
typeof()
其结果: number/string/boolean/undefined/object
8.数据类型转换
(1)隐式转换
①数字+字符串:数字转成字符串
1+'a' // '1a'
②数字+布尔型:布尔型转成数字 true->1 false->0
1+true //2
1+false //1
③字符串+布尔型:布尔型转成字符串
'a'+true // 'atrue'
④null的加法
1+null //1 null->0
true+null //1 true->1 null->0
'a'+null //'anull' null->'null'
小练习
var num1=3,num2=true,num3='hello';
console.log(num1+num2+num3); //'4hello'
console.log(num2+num3+num1);//'truehello3'
console.log(num3+num1+num2);//'hello3true'
(2)强制转换
①将数据转成数值型
Number( )
将任意的数据转换成数值型,如果被转换的字符串中含有非数字,则返回NaN;布尔型会转成数值型。
②将数据转换成整型
parseInt()
parseInt('1.5')// 1
查看数据的开始是否为数字,遇到非数字则返回前边的数字。
如果开头是非数字,则返回 NaN
③将数据转成浮点型
parseFloat()
练习:'1.5a' '7.1a' 'a2.3'
④将数据转换成字符串
toString()
var pi=3.14;
pi.toString()
9.运算符和表达式
由运算符连接的操作数据,所组成的形式称为表达式
(1)算术运算符
\+ - * / % ++ --
% 取余
++ 自增,在原来的基础之上加1
-- 自减,在原来的基础之上减1
console.log(a++) 先打印a的值,然后再自增
console.log(++a) 先自增,然后再打印a的值
(2)比较运算符
\>= <= > < ==(等于) != ===(全等于) !==
返回的结果是布尔型的值
== 只是比较两个数据的值是否相同
=== 不仅比较数据的值,还比较两个数据的类型是否相同
3>'10' // true
数字和字符串比较,字符串转成数值型
'3'>'10' //true
两个字符串比较,比较的是Unicode码
3->51 1->49
3>'10a' //false
3<'10a' //false
3=='10a'//false
NaN和任何的数字比较(> < >= <= == ===)返回false;
NaN==NaN 返回false
(3)逻辑运算符
|| 或者 && 并且 非 !
|| 关联的两个条件只需要满足其一,结果就是true,否则false
&& 关联的两个条件都满足,结果是true,否则false
! 取反
逻辑短路
-
|| 当第一个条件为true的时候,就不需要执行第二个条件
-
&& 当第一个条件为false的时候,就不需要执行第二个条件
(4)位运算符
将数据转成二进制然后执行运算
1 10 11 100 101 110 111 1000 1001…10000
2 4 8 16
101101=100000+1000+100+1
32 + 8 + 4 + 1
56 = 32 + 16 + 8
100000 + 10000 + 1000 = 111000
**按位与(&) 上下两位都是1,结果是1,否则是0**
**按位或(|) 上下两位含有1,结果是1,否则是0**
**按位异或(^) 上下两位相同是0,不同是1**
**按位右移(>>) 删除二进制的最后n位,大概变小到原来一般**
**按位左移(<<) 在二进制的最后添加0,变大到原来一倍
练习: 5&9=1 8|10=10 6^12=10
0101 1000 0110
1001 1010 1100
(5)赋值运算符
*= += -= = /= %=
在原来的基础之上进行加减乘除取余
x+=3;
小练习:
声明一个变量保存年份,如果是闰年,打印“是闰年”(逻辑短路)
闰年标准:4年一个闰年(能被4整除),并且不能100整除;或者能被400整除
10.运算符——三目运算符
由三个运算数或表达式组成的结构
条件表达式 ? 表达式1 : 表达式2
如果条件表达式为true,执行表达式1;
如果条件表达式为false,执行表达式2;
11.两个浏览器端函数
alert() 弹出警示框
prompt() 弹出提示(输入)框,输入的值是字符串类型
12.流程控制
程序=数据+算法
程序分为顺序执行、选择执行、循环执行
(1)if语句
①执行语句1
②如果条件表达式为true,执行语句2
③执行语句3
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDQwPgqJ-1570618005664)(file:///C:\Users\beloved\AppData\Local\Temp\ksohtml14512\wps2.jpg)]
(2)if-else语句
执行过程:
①执行语句1
②执行条件表达式,如果是true,执行语句2;如果是false,执行语句3
③执行语句4;
练习1:声明变量保存成绩,如果超过60分,打印及格;否则打印不及格。
练习2:声明两个变量存储账号和密码,如果账号是root,并且密码是123456,打印登录成功;否则打印登录失败。
练习3:使用弹出提示框分别输入商品的**价格**和**数量**,如果**总价**满500打九折,打印应付金额;使用变量存储当前会员卡的**余额**,如果余额足够支付,打印支付成功,否则打印余额不足。
条件表达式中几个特殊的情况
(3)if-else嵌套
用于判断多种情况
执行过程:
①执行语句0
②执行条件表达式1
如果条件表达式1为true,执行语句1
如果条件表达式1为false,执行条件表达式2
如果条件表达式2为true,执行语句2
如果条件表达式2为false,执行条件表达式n
③如果以上所有的条件表达式都为false,执行语句n+1
(4)switch-case
和if-else类似,是一种特殊的多项分支语句
说明:表达式和case中的值比较的时候使用的是全等于(===)。
对比if**-else嵌套和switch****-**case语句
相同点:两者都可以用于多项分支语句
不同点:if-else既可以判断相等,又可以判断不相等,适用范围比较广;switch-case只适用于全等的情况,在结构上更为清晰合理,执行效率相对比较高。
13.循环执行
循环:就是一遍又一遍执行相同或者相似的代码
循环的两个要素
循环的条件:控制循环的次数
循环体:重复执行的相同或者相似代码
while循环
小练习
使用switch-case判断一个人的成绩标准(分数/10,取整)
100
90~100以下
80~90以下 …
使用循环打印 10~1
使用循环打印 20 22 24 26 28 30
程序员必做50题
https://wenku.baidu.com/view/af66e2f14afe04a1b071de42.html
14.break关键字
可以结束任何形式的循环
练习:使用变量保存1个数字,循环弹出提示框输入数字,如果数字猜大了,弹出警示框提示’big’,如果数字猜小了,弹出警示框提示’small’,否则提示’right’,结束循环。
03_break.js 03_break.html
15.do-while循环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7cNqKTGj-1570618005665)(file:///C:\Users\beloved\AppData\Local\Temp\ksohtml13700\wps1.jpg)]
先执行一次循环体,无论循环条件是否为true
- 练习:打印50~1之间所有的数字
- 练习:打印1~100之间所有的偶数
- 练习:打印100 95 90 85 80 75 70
- 练习:计算1~100所有能被7整除的数字的和
- 练习:计算10的阶乘
- 练习:计算1~20所有能被3整除的数字的乘积。
- 练习:声明一个变量保存密码’123456’,循环弹出提示框输入密码,如果输入正确,弹出警示框提示’login success’,结束循环。 05_dowhile.js 05_dowhile.html
16.for循环
for(初始值;循环条件;循环的变化){
循环体
}
- 练习:计算1~100之间所有数字的和
- 练习:打印50~20之间所有的奇数
- 练习:计算1~10之间所有数字的乘积
- 练习:假如本金10000,年利率是4%,5年后本金和利息一共有多少
17.break和continue
break:结束循环,后续不会再执行其它的循环
continue:跳过本次循环,继续执行下一次循环
- 练习:计算1~100之间所有偶数的和(遇到奇数跳过)
- 练习:打印1~100所有数字,如果能被3整除,或者能被4整除,就跳过。1 2 5 7 10 11 13…
- 练习:打印本世纪的前10个闰年,先计算本世纪的闰年个数。
18.循环嵌套
while、do-while、for循环之间可以相互嵌套
*****
*****
*****
*****
*****
*
**
***
****
*****
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
小练习
①打印倒着的99乘法表
9*9=81 8*9=72
8*8=64
1*1
②计算1~100之间的和,当和大于4000的时候,结束循环,打印当前和是多少
推荐书籍:
《javascript高级程序设计》第三版 红宝石
《javascript权威指南》第六版 犀牛书
19.函数
parseInt()/parseFloat()/alert()/prompt()/Number()...
分为系统函数和自定义函数
函数(Function):有时也被称为方法,是一段预定义好,并可以被反复使用的代码块。
(1)创建普通函数
function 函数名称(){
函数体——封装反复使用的代码块
}
(2)创建带有参数的函数
function 函数名称(参数列表){//形参——用于接收数据
函数体
}
-
调用:函数名称(参数列表); //实参——实际传递的数据
-
**参数列表:**可以是0个或者是多个,之间用逗号隔开;创建时的参数称为形参(形式上的参数),调用时的参数称为实参(实际的参数),调用的时候,实参的值会按顺序赋给形参。
-
形参本质上就是变量,只能在函数内部使用。
练习:创建函数getSum,传递1个参数,计算1~任意数字之间的和。
练习:创建函数getRun,传递2个参数,打印任意两个年份之间所有的闰年。
(3)带有返回值的函数
function 函数名称(参数列表){
函数体
return 返回值;
}
调用:函数名称(参数列表)
return表示函数调用后,返回的结果。
注意:
如果函数中没有写return或者return后没有任何的值,默认返回undefined
return后函数体中所有的代码都不会被执行
练习:创建函数getMax,传递2个参数,返回最大值。
练习:创建函数getMax,传递3个参数,返回最大值
练习:创建函数isRun,传递1个参数(年份),返回是否为闰年,是返回true,不是闰年返回false
练习:创建函数getStatus,传递1个参数(订单状态码),返回对应的中文。
1-待付款 2-待发货 3-运输中 4-已签收 5-已取消 其它-无法查询
20.作用域
就是变量和函数的可访问范围。
分为全局作用域和局部(函数)作用域
**全局作用域:**在代码任何地方都能访问。
**局部(函数)作用域:**只能在当前函数的内部访问。
(1)变量声明提升
JS程序执行前,在当前作用域下使用var声明的变量会提升到最前边,但赋值还是在原来的位置。
(2)函数提升
函数和变量一样,在JS程序执行前,把使用function关键字创建的函数提升到最前边。
**注意:**如果函数名和变量名一致,变量会覆盖函数;(先提升函数,再提升变量)
21.递归(了解)
在函数的内部调用自身
递归在使用的时候需要有结束条件,结合return
斐波那契数列
1 1 2 3 5 8 13 21 34 ...
22.匿名函数
没有名称的函数 function(){ }
创建函数——函数声明
function fn(){ }
(1)创建函数——函数表达式
var 函数名称=function(形参列表){
函数体
return 值;
}
调用:函数名称(实参列表)
对比函数声明和函数表达式的区别
- 函数声明存在函数提升,可以在任意位置创建,也可以在任意位置调用。
- 函数表达式不存在函数提升,存在变量提升,必须先创建再调用。
练习:使用匿名函数创建函数getSum,传递1个参数,返回1~任意数字之间所有的和。
(2)匿名函数自调用
(function(){
函数体; //是一个局部作用域,无法被外界访问
})();
(3)匿名函数以参数传递——回调函数
function add(a){
//形参a就相当于是函数名称
a(); //调用传递的匿名函数
}
add(function(){ ... })
23.全局函数
parseInt 将数据转为整型
parseFloat 将数据转为浮点型
encodeURI 对URL进行编码
decodeURI 对已经编码的URL进行解码
isNaN 检测数据是否为NaN 是->true 不是->false
isFinite 检测数据是否为有限值 是->true 不是->false
eval 执行字符串中的表达式 eval('1+2') -> 3
练习:使用弹出提示框输入一组JS表达式,使用eval执行这组字符串表达式。 06_eval.js 06_eval.html
24.对象
对象是一组属性(property)和方法(method)的集合。
(1)JS中的对象
内置对象:JS提供的
宿主对象:根据JS不同的执行环境划分
自定义对象:自己创建的对象
(2)创建自定义对象——对象直接(字面)量
-
使用大括号{} 创建空对象
-
属性名和属性值之间用冒号隔开
-
多组属性之间用逗号隔开
-
属性名中的引号可加可不加,如果有特殊字符,必须添加引号
练习:创建一个部门对象,属性有部门编号,名称,员工数量
练习:创建一个员工对象,属性有编号,姓名,性别,生日,工资,所属部门。
(3)使用内置构造函数创建对象
var book=new Object(); //创建空对象
book.title='三国演义'; //添加属性,属性名不能加引号
book['author']='罗贯中';//添加属性,属性名必须加引号,如果不加引号,被认为是变量。
练习:创建手机对象,属性有品牌,颜色,大小,产地.
练习:创建学校对象,属性有编号,名称,地址,建校时间
(4)获取对象的属性值
对象['属性名']
对象.属性名
如果要获取的属性不存在,返回undefined
(5)遍历对象中的属性
获取对象中的属性名及其属性值
for(var key in emp){
key 要遍历的每一个属性名
emp 要遍历的对象
emp[key] 通过属性名来找到属性值
}
练习:创建一个用户对象,属性有编号,用户名,密码,手机,邮箱,使用for-in遍历该对象的属性。
**注意:**for-in只能遍历自定义的属性,无法遍历预定义(JS自动添加)的属性
(6)检测对象中是否含有某个属性
'属性名' in 对象 //true->存在 false->不存在
对象.hasOwnProperty('属性名') //true->存在 false->不存在
对象.属性名===undefined // true->不存在 false->存在
(7)对象中的方法
var person={
name: 'tom',
say:function(){
this.name //this指代当前的对象名称 person
}
}
调用方法: person.say();
小练习:
创建一个圆对象,包含属性有半径、圆周率;添加两个方法,计算圆的周长(getLength)和面积(getArea);在方法中返回周长和面积。分别调用。
25.数组
数组是由多个元素组成的集合,是数据集合。每一个元素就是一个数据。
1.创建数组
(1)数组字面量
[元素1,元素2...]
数组中可以存放任意类型的数据
(2)内置构造函数
new Array(元素1,元素2...)
new Array(5) //初始化数组长度为5,可以继续添加第6个...
访问数组中的元素
数组名称[下标] 下标从0开始
如果下标中没有元素,返回undefined。
练习:创建数组,保存若干个用户名
练习:创建数组,初始化长度为3,添加3门课程。
2.获取数组元素的个数
数组.length
使用数组元素个数可以在最后添加一个新元素
数组[ 数组.length ] = '数据';
练习:创建一个空数组,使用数组的长度添加3个手机品牌。
3.数组分类
数组分为关联数组和索引数组
关联数组:以字符串作为下标,需要单独添加每个元素。
索引数组:以正整数作为下标
4.遍历数组元素
(1)for-in
for(var key in person){
key 要遍历的元素的下标
person[key] 每个元素下标对应的数据
}
既可以遍历关联数组,也可以遍历索引数组
(2)for循环
var arr=['a','b','c'];
for(var i=0;i<arr.length;i++){
i 代表数组的下标,从0开始
arr[i] 下标对应的元素
}
只能遍历索引数组
- 练习:创建数组,保存若干个学生的成绩,计算平均成绩。
- 练习:创建数组,保存若干个汽车的品牌,把’宝马’改为’BMW’
- 练习:创建函数getCount,传递两个参数(数组,要查找的元素),返回要查找的元素在数组中出现的次数。
- 练习:创建函数getAvg,传递一个参数(数组中保存了若干个成绩),返回平均分。
- 练习:创建函数getIndex,传递两个参数(数组,要查找的元素),如果找到,返回下标,如果找不到返回-1.
5.数组中的方法(API)
API - 应用程序编程接口,预先定义好的函数/方法
toString() 数组中的元素转为字符串,按照逗号分隔
join() 数组中的元素转为字符串,按照指定的字符分隔数组中的元素。
concat(arr1,arr2...) 拼接两个或者更多的数组
slice(start,end) 截取数组中的元素,start开始的下标,end结尾的下标,不包含end本身;负数表示倒数第n个
练习:创建数组,保存a~h,每个元素存储1个字母,截取bc和ef,拼接成一个新数组。
- splice(start,count,value1,value2…) 删除数组中的元素,start开始的下标,count删除的数量,value1,value2删除后替换的元素。start为负值表示倒数第n个
- reverse() 翻转数组中的元素
- sort() 对数组中的元素进行排序,默认按照Unicode码由小到大排序
sort(function(a,b){
return a-b; //数字由小到大
//return b-a; //数字由大到小
});
小练习
①创建函数getMax,传递一个参数(数组),返回最大值。
②使用数组遍历来翻转数组中的元素
③了解冒泡排序,实现数字由大到小(由小到大)排序
26.数组API
push() 往数组的末尾添加一个元素,返回数组的长度
pop() 删除数组末尾的元素,返回删除的元素
unshift() 往数组的开头添加一个元素,返回数组的长度
shift() 删除数组开头的元素,返回删除的元素
27.二维数组
数组中的每个元素也数组
var arr=[ [],[],[]... ]
访问数组中的元素 数组[下标][下标]
28.字符串对象
包装对象:让原始类型的数据也可以像引用类型一样,具有属性和方法。
JS提供了3种包装对象:String、Number、Boolean
将任意的数据包装成字符串对象
new String(true) //'true' ,返回类型为object
String(true)// 'true',返回类型为string
字符串对象本质上还是字符串,在使用中和字符串没有任何区别。
转义字符 \
转换字符的意义(作用)
\n 将字符n转换成换行符
\' 将引号转成普通的字符
\t 将字符t转换成制表符(tab键效果)
...
练习:打印出现 welcome to chi\na
字符串中的****API
toUpperCase() 将英文字母转为大写
toLowerCase() 将英文字母转为小写
字符串.length 获取字符串的长度
charAt() 获取下标对应的字符 字符串[下标]
charCodeAt() 查看某个字符的Unicode编码
练习:遍历字符串'javascript',获取a出现的次数。
indexOf() 查找某个字符第一次出现的下标,找不到返回-1
lastIndexOf() 查找某个字符最后一次出现的下标,找不到返回-1
slice(start,end) 截取字符串,start开始的下标,end结束的下标,不包含结束本身;如果为负数,表示倒数第n个
'110230199802183572' -> 1998年02月18日 男
substr(start, count) 截取字符串,start开始的下标,count截取的长度;start为负值表示倒数第n个,count为空表示截取到最后。
4.练习:使用变量保存一个邮箱,分别获取邮箱的用户名和域名
jerry123@sina.com.cn
获取@的下标, 0~下标 下标下一位~最后
5.练习:将一个英文单词的首字母转为大写,其余转为小写。
'heLLo' -> 'Hello'
split() 按照指定的字符,将字符串转为数组。
'how are you'
29.匹配模式(了解)
作用:用于查找、替换字符串
replace(value1,value2) 查找并替换; value1要查找的字符串,value2要替换的字符串。value1可以使用字符串,也可以使用正则表达式 /china/ig
i->ignore 忽略大小写 g->global 全局查找
match(value) 用于查找匹配的字符串,返回一个数组
search(value) 用于查找满足条件的第一个字符的下标,如果找不到返回-1; 和indexO功能类似。
小练习:
将一句英文中每个单词的首字母转大写,其余字母转小写;
'hoW aRe yOu' -> 'How Are You'
30.Math对象
Math对象不需要使用new关键字
abs() 取绝对值
floor() 向下取整
ceil() 向上取整
round() 四舍五入取整
max() 取一组数字的最大值
min() 取一组数字的最小值
pow(x,y) 取x的y次幂
PI 取圆周率
random() 取随机数 范围 >=0 <1
31.通过Unicode码获取对应字符
String.fromCharCode( 编码 )
32.Date对象
用于对日期时间进行存储和计算
(1)创建Date对象
new Date('2018/12/25 10:30:50')
new Date(2018,10,25,10,30,50) //第2个参数月份范围0~11
new Date() 存储当前的系统时间
new Date(1000*60*60*24) 存储的是距离计算机元年的毫秒数对应的日期时间
(2)获取Date对象中的日期时间
getFullYear/Month/Date/Hours/Minutes/Seconds
/Milliseconds(毫秒)/Day(星期)/Time(距离计算机元年毫秒数)
星期日~星期六 范围0~6
(3)转为本地日期时间格式
toLocaleString() //年-月-日 时:分:秒
toLocaleDateString() //年-月-日
toLocaleTimeString() //时:分:秒
(4)设置日期时间
setFullYear/Month/Date/Hours/Minutes/Seconds/
Milliseconds/Time
setTime设置距离计算机元年的毫秒数,一旦设置后,所有的日期时间都会受到影响。
练习:创建Date对象,保存员工的入职时间’2018-11-16’,3年后合同到期,合同到期前一个月续签合同,如果续签时间是周末,提前到周五。提前一周通知人力准备续签(提醒时间)。
分别打印入职时间、到期时间、续签时间、提醒时间。
练习:计算当前时间距离2018年圣诞节还有 ?天?时?分?秒
33.Number对象
new Number(数据)
创建Number对象,同时将数据转为数值型。
toFixed(n) 保留小数点后n位
toString(n) 将数值型转为字符串类型,n设置转换的进制(2,8,16)
Number.MAX_VALUE 获取计算机能存储的最大数值
Number.MIN_VALUE 获取计算机能存储的最小数值
34.Boolean对象
Boolean() / new Boolean()
创建Boolean对象,同时将数据转为布尔型
!!数据 将数据转为布尔型
toString() 将布尔型数据转为字符串
35.ES6
ECMAScript6
ES2017 ES2018
(1)块级作用域
使用let关键字声明的变量,只能在块级作用域下访问;
块级作用域:{ } if、else、while、do-while、for里边大括号都是块级作用域。
let关键字声明的变量不存在声明提升。
(2)箭头函数
是回调函数的另一种写法,和匿名函数不完全一致;
sort( (a,b)=>{
return a-b;
} );
如果函数体中只有一行代码,并且是return形式,可以简化为
sort( (a,b)=>a-b );
ES6电子版:http://es6.ruanyifeng.com/
小练习
双色球:随机取1~33之间的6个数字(数组),不能重复,并且从小到大排序;随机取1~16之间一个数字,和之前6个数字组成数组。
Date对象中的日期时间
getFullYear/Month/Date/Hours/Minutes/Seconds
/Milliseconds(毫秒)/Day(星期)/Time(距离计算机元年毫秒数)
星期日~星期六 范围0~6
(3)转为本地日期时间格式
toLocaleString() //年-月-日 时:分:秒
toLocaleDateString() //年-月-日
toLocaleTimeString() //时:分:秒
(4)设置日期时间
setFullYear/Month/Date/Hours/Minutes/Seconds/
Milliseconds/Time
setTime设置距离计算机元年的毫秒数,一旦设置后,所有的日期时间都会受到影响。
练习:创建Date对象,保存员工的入职时间’2018-11-16’,3年后合同到期,合同到期前一个月续签合同,如果续签时间是周末,提前到周五。提前一周通知人力准备续签(提醒时间)。
分别打印入职时间、到期时间、续签时间、提醒时间。
练习:计算当前时间距离2018年圣诞节还有 ?天?时?分?秒
33.Number对象
new Number(数据)
创建Number对象,同时将数据转为数值型。
toFixed(n) 保留小数点后n位
toString(n) 将数值型转为字符串类型,n设置转换的进制(2,8,16)
Number.MAX_VALUE 获取计算机能存储的最大数值
Number.MIN_VALUE 获取计算机能存储的最小数值
34.Boolean对象
Boolean() / new Boolean()
创建Boolean对象,同时将数据转为布尔型
!!数据 将数据转为布尔型
toString() 将布尔型数据转为字符串
35.ES6
ECMAScript6
ES2017 ES2018
(1)块级作用域
使用let关键字声明的变量,只能在块级作用域下访问;
块级作用域:{ } if、else、while、do-while、for里边大括号都是块级作用域。
let关键字声明的变量不存在声明提升。
(2)箭头函数
是回调函数的另一种写法,和匿名函数不完全一致;
sort( (a,b)=>{
return a-b;
} );
如果函数体中只有一行代码,并且是return形式,可以简化为
sort( (a,b)=>a-b );
ES6电子版:http://es6.ruanyifeng.com/
小练习
双色球:随机取1~33之间的6个数字(数组),不能重复,并且从小到大排序;随机取1~16之间一个数字,和之前6个数字组成数组。