基本语法
- 数据类型和变量
变量 var 变量名 = 值;
分类(数据类型)
- string(字符串)
- number(数字)
- boolean(布尔)
- undefined(未定义)
- null(空)
- Symbol(符号)
- Biglnt(数值类型,表示任意精度的整数)
- 引用数据类型:OBject对象:Array(数组),Function(函数),Date(时间)
- 字符串
字符串:"" or ''
转义字符:'I'm "OK"!';
多行字符串,用反引号:`...`
如:console.log(`你好, ${name}, 你今年${age}岁了!`);
- 数组
//1.数组截取 slice
var arr =['a','b','c','d','e','f']
console.log("截取",arr.slice(0,3))
//2.索引 indexOf
var arr =[10,20,'30','d','e','f']
console.log("索引",arr.indexOf(20))
//3.末尾添加若干元素 push
var arr =[1,2,3,4]
console.log("末尾添加元素",arr.push(4))
//4.删除末尾元素 pop
var arr =[1,2,3,4]
console.log("删除末尾元素",arr.pop(1))
//5.头部添加若干元素 unshift
var arr =[1,2,3,4]
console.log("头部添加若干元素",arr.unshift('a','b'))
//6.删掉第一个元素 shift
var arr =[1,2,3,4]
console.log("删掉第一个元素",arr.shift(1))
//7.排序 sort
var arr =[2,1,4,3]
console.log("排序",arr.sort())
//8.反转 reverse
var arr =[2,1,4,3]
console.log("反转",arr.reverse())
//9.万能方法,指定的索引开始删除若干元素,然后再从该位置添加若干元素 splice
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("万能方法",arr.splice(2, 3, 'Google', 'Facebook'))
console.log("return",arr)
//10.把当前的Array和另一个Array连接起来,并返回一个新的Array concat
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("连接",arr.concat(2, 3, 'Google', 'Facebook'))
//11.把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串 join
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("连接起来",arr.join('-'))
//12.多维数组
var arr = [[1, 2, 3], [400, 500, 600], '-'];
console.log("取500",arr[1][1])
- 对象
```js
//把ly当做对象
var ly = {
name: 'ly',
birth: 99999,
school: 'No.1 Middle School',
height: 999,
weight: 50,
score: null
};
console.log("name",ly.name)
console.log("birth",ly.birth)
console.log("school",ly.school)
console.log("height",ly.height)
console.log("weight",ly.weight)
console.log("score",ly.score)
//in判断属性的存在
let name1='name' in ly;
console.log('name1',name1)
//判断当前ly这个对象自身拥有的 hasOwnProperty
let ly1=ly.hasOwnProperty('name');
console.log("ly1",ly1)
- 条件判断
if ... else...
- 循环
//初始条件、结束条件和递增条件来循环
var x = 0;
var i;
for (i=1; i<=10000; i++) {
x = x + i;
}
console.log("x",x)
//索引来遍历数组
var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
x = arr[i];
console.log(x);
}
//break退出循环
var x = 0;
for (;;) { // 将无限循环下去
if (x > 100) {
break; // 通过if判断来退出循环
}
x ++;
}
//for ... in把一个对象的所有属性依次循环出来
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key); // 'name', 'age', 'city'
}
//要过滤掉对象继承的属性,用hasOwnProperty()来实现
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
console.log(key);
}
}
//for ... in循环可以直接循环出Array的索引
var a = ['A', 'B', 'C'];
for (var i in a) {
console.log(i);
console.log(a[i]);
}
//while只有一个判断条件,条件满足,就不断循环
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x;
console.log(x)
// do ... while每次循环完成的时候判断条件 循环体会至少执行1次
var n = 0;
do {
n = n + 1;
} while (n < 100);
n;
console.log(n)
- Map和Set
1.Map是一组键值对的结构,具有极快的查找速度
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
var mm= m.get('Michael');
console.log("mm",mm)
var m = new Map(); // 空Map
var mm = m.set('Adam', 67); // 添加新的key-value
console.log("mm",mm)
var mm1 = m.set('Bob', 59);
console.log("mm",mm1)
var mm2 = m.has('Adam'); // 是否存在key 'Adam': true
console.log("mm",mm2)
var mm3 = m.get('Adam'); // 67
console.log("mm",mm3)
var mm4 = m.delete('Adam'); // 删除key 'Adam'
console.log("mm",mm4)
var mm5 = m.get('Adam'); // undefined
console.log("mm",mm5)
var m = new Map();
var mm= m.set('Adam', 67);
console.log(mm)
var mm1=m.set('Adam', 88);
console.log(mm1)
var mm2=m.get('Adam'); // 88
console.log(mm2)
2.set没有重复的key
var s1 = new Set();
console.log(s1)
var s2 = new Set([1, 2, 3]);
console.log(s2)
//重复的话会被自动过滤
var s = new Set([1, 2, 3, 3, '3']);
console.log(s)
- iterable
//1.for...of
var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
console.log(x);
}
for (var x of s) { // 遍历Set
console.log(x);
}
for (var x of m) { // 遍历Map
console.log(x[0] + '=' + x[1]);
}
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
console.log(x);
}
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
console.log(x);
}
//forEach()
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
console.log(element);
});
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
console.log(value);
});
var a = ['A', 'B', 'C'];
a.forEach(function (element) {
console.log(element);
});
获取时间戳
1.Date.now()
2.Date.parse()
3.ValueOf()
4.getTime()
5.Number
1.Date.now()
//获取中国标准时间
var time = new Date();
console.log("时间",time)
2.Date.parse()
//不推荐这种方式
var time = Date.parse(new Date())
console.log("时间",time)
3.valueOf()
//对象的原始值获得准确的时间戳值
var time = (new Date()).valueOf();
console.log("time",time)
4.getTime()
//通过原型方法直接获得当前时间的毫秒值
var time = new Date().getTime();
console.log("time",time)
5.Number()
var time = Number(new Date());
console.log("time",time)
js时间戳转时间
1.new Date(时间戳) 格式转化获得当前时间
var time = new Date(1472048779952)
console.log("time",time)
2.生成'2022/1/18 上午10:09'格式
test(n){
var time = new Date(parseInt(n)).toLocaleString().replace(/:\d{1,2}$/,'');
console.log("time",time)
},
var time = new Date(parseInt(n)).toLocaleString().substr(0,14)
console.log("time",time)
利用正则
var time = new Date(parseInt(n)).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
console.log("time",time)
3.生成'yyyy-MM-dd hh:mm:ss '格式
n=new Date(n)
var time = n.toLocaleDateString().replace(/\//g, "-") + " " + n.toTimeString().substr(0, 8)
console.log("time",time)
let now = new Date(n),
y = now.getFullYear(),
m = now.getMonth() + 1,
d = now.getDate();
var time = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0, 8);
console.log("time",time)
当前系统区域设置格式(toLocaleDateString和toLocaleTimeString)
var time = (new Date()).toLocaleDateString() + " " + (new Date()).toLocaleTimeString()
console.log("time",time)
普通字符串(toLocaleDateString和toTimeString)
var time = (new Date()).toDateString() + " " + (new Date()).toTimeString()
console.log("time",time)
格林威治标准时间(toGMTString)
var time = (new Date()).toGMTString()
console.log("time",time)
全球标准时间(toUTCString)
var time = (new Date()).toUTCString()
console.log("time",time)
Date对象字符串(toString)
var time =(new Date()).toString()
console.log("time",time)
Date对象构造函数
//参数说明
milliseconds - 距离JavaScript内部定义的起始时间1970年1月1日的毫秒数
datestring - 字符串代表的日期与时间。此字符串可以使用Date.parse()转换
year - 四位数的年份,如果取值为0-99,则在其之上加上1900
month - 0(代表一月)-11(代表十二月)之间的月份
day - 1-31之间的日期
hours - 0(代表午夜)-23之间的小时数
minutes - 0-59之间的分钟数 seconds - 0-59之间的秒数
microseconds - 0-999之间的毫秒数
//日期获取类函数
Date() 函数 -- Date对象的构造函数
getDate() 函数 -- 返回date对象中的月份中的天数(1-31)
getDay()函数 -- 返回date对象中的星期中的天数(0-6)
getFullYear() 函数 -- 返回date对象中的四位数年份
getHours()函数 -- 返回date对象中的小时数(0-23)
getMilliseconds() 函数 -- 返回date对象中的毫秒数(0-999)
getMinutes() 函数 -- 返回date对象中的分钟数(0-59)
getMonth() 函数 -- 返回date对象中的月份数(0-11)
getSeconds() 函数 -- 返回date对象中的秒数(0-59)
getTime() 函数 -- 返回date对象的时间戳表示法(毫秒表示)
getTimezoneOffset() 函数 -- 返回本地时间与用UTC表示当前日期的时间差,以分钟为单位
getUTCDate() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份中的一天(1-31) getUTCDay() 函数 -- 返回date对象中用世界标准时间(UTC)表示的周中的一天(0-6) getUTCFullYear() 函数 -- 返回date对象中用世界标准时间(UTC)表示的四位年份 getUTCHours() 函数 -- 返回date对象中用世界标准时间(UTC)表示的小时数(0-23) getUTCMilliseconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的毫秒数(0-999) getUTCMinutes() 函数 -- 返回date对象中用世界标准时间(UTC)表示的分钟数(0-59) getUTCMonth() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份数(0-11) getUTCSeconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的秒数(0-59) getYear() 函数 -- 返回date对象的年份(真实年份减去1900) Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
//日期设置类函数
setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳) setYear() 函数 -- 设置date对象的年份(真实年份减去1900)
//日期打印类函数
toDateString() 函数 -- 返回date对象的日期部分的字符串表示
toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串
toTimeString()函数 -- 返回date对象的时间部分的字符串
toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
//日期解析类函数
Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距1970年1月1日午夜之间的毫秒数(时间戳) JavaScript_Date函数按照字母分类 Date() 函数 -- Date对象的构造函数
getDate() 函数 -- 返回date对象中的月份中的天数(1-31) getDay()函数 -- 返回date对象中的星期中的天数(0-6) getFullYear() 函数 -- 返回date对象中的四位数年份
getHours()函数 -- 返回date对象中的小时数(0-23)
getMilliseconds() 函数 -- 返回date对象中的毫秒数(0-999)
getMinutes() 函数 -- 返回date对象中的分钟数(0-59)
getMonth() 函数 -- 返回date对象中的月份数(0-11)
getSeconds() 函数 -- 返回date对象中的秒数(0-59)
getTime() 函数 -- 返回date对象的时间戳表示法(毫秒表示)
getTimezoneOffset() 函数 -- 返回本地时间与用UTC表示当前日期的时间差,以分钟为单位
getUTCDate() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份中的一天(1-31) getUTCDay() 函数 -- 返回date对象中用世界标准时间(UTC)表示的周中的一天(0-6) getUTCFullYear() 函数 -- 返回date对象中用世界标准时间(UTC)表示的四位年份 getUTCHours() 函数 -- 返回date对象中用世界标准时间(UTC)表示的小时数(0-23) getUTCMilliseconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的毫秒数(0-999)
getUTCMinutes() 函数 -- 返回date对象中用世界标准时间(UTC)表示的分钟数(0-59) getUTCMonth() 函数 -- 返回date对象中用世界标准时间(UTC)表示的月份数(0-11) getUTCSeconds() 函数 -- 返回date对象中用世界标准时间(UTC)表示的秒数(0-59) getYear() 函数 -- 返回date对象的年份(真实年份减去1900) Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距1970年1月1日午夜之间的毫秒数(时间戳)
setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距1970年1月1日午夜之间的毫秒数(时间戳)
setYear() 函数 -- 设置date对象的年份(真实年份减去1900) toDateString() 函数 -- 返回date对象的日期部分的字符串表示
toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串
toTimeString()函数 -- 返回date对象的时间部分的字符串
toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
正则表达式 (常见)
//匹配的是:以数字开头的字符串
let reg = /^\d/;
console.log(reg.test('name')); //false
console.log(reg.test('2020name')); //true
console.log(reg.test('name2020')); //false
//匹配的是:以数字结尾的字符串
let reg = /\d$/;
console.log(reg.test('name')); //false
console.log(reg.test('2020name')); //false
console.log(reg.test('name2020')); //true
// ^/$ 两个都不加匹配的是:字符串中包含符合规则的内容即可
let reg1 = /\d/;
console.log(reg1.test('as2')); //true
//^/$ 两个都加匹配的是:字符串只能是和规则一致的内容
let reg2 = /^\d$/
console.log(reg2.test('as2')); //false
console.log(reg2.test('22')); //false
console.log(reg2.test('2')); //true
邮箱
规则:
邮箱的名字以‘数字字母下划线-.’几部分组成,但是-/.不能连续出现也不能作为开头 \w+((-\w+)|(.\w+))*;
@ 后面可以加数字字母,可以出现多位 @[A-Za-z0-9]+ ;
对@后面名字的补充:多域名 .[http://com.cn](https://link.zhihu.com/?target=http%3A//com.cn) ;
企业域名 (.|-)[A-Za-z0-9]+)*
.com/.cn 等域名 .[A-Za-z0-9]+
const regEmail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
或者
const regEmail = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/
const value =1111111111;
const regEmail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
if (regEmail.test(value)) {
console.log("正确的邮箱")
}else{
console.log("请输入正确的邮箱")
}
手机
规则:
11 位
第一位是数字 1
第二位是数字 3-9 中的任意一位
const regMobile = /^(0|86|17951)?(1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
名字
规则:
必须是汉字
名字长度 2-10 位
可能有译名:·汉字
let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10})?$/;
密码
规则:
6-16 为组成
必须由数字字母组成
let reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\d(a-z)(A-Z)]{6,16}$/;
身份证号
规则:
18 位
最后一位是数字或者 X
前 6 位是省市县
后四位是年
后两位是月 01-12
后两位是日 01-31
最后四位
最后一位:X 或者数字
倒数第二位:偶数:女 奇数:男 小括号分组的作用:分组捕获,不仅可以把大正则匹配信息捕获到,还可以单独捕获到每个小分组的内容
let reg =/^([1-9]\d{5})((19|20)\d{2})(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}(\d|x)$/i;
是否为有效数字
规则:
开头可以有+ -
整数位:
如果是一位数可以是 0-9 任意数;
如果是多位数,首位不可以是 0;
小数位:如果有小数位,那么小数位后面至少有一位数字,也可以没有小数位
let reg = /^[+-]?(\d|[1-9]\d+)(.\d+)?$/;
console.log(reg.test('0.2')); //true
console.log(reg.test('02.1')); //false
console.log(reg.test('20.')); //false
定时器
1.setTimeout() 在指定的时间后(单位为毫秒),执行某些代码,代码只会执行一次
2.setInterval() 按照指定的周期(单位为毫秒)来重复执行某些代码,定时器不会自动停止,除非调用
clearInterval() 函数来手动停止或着关闭浏览器窗口
var timer = setTimeout(function() {
console.log('爆炸了');
}, 5000)
setInterval(function() {
console.log('继续输出');
}, 1000);
倒计时
timeStamp(times){
if(times <= 0){
this.clearTimer(); //清除定时器
return
}
let letime = times;
//let time = parseInt(letime);
let time = {}; //代码有问题
let second = '00';
if (parseInt(letime) > 60) {
let min = parseInt(letime / 60);
second = parseInt(letime) % 60;
time = {
min: min,
second: second
};
if (min > 60) {
min = parseInt(letime / 60) % 60;
let hour = parseInt(parseInt(letime / 60) / 60);
let day = parseInt(parseInt(parseInt(letime / 60) / 60) / 24);
// 直接返回字符串格式:
// time = hour + "时" + min + "分" + second + "秒";
// 返回对象格式:
time = {
hour: hour,
min: min,
second: second
}
if (hour >= 24) {
hour = parseInt(parseInt(letime / 60) / 60) % 24;
let day = parseInt(parseInt(parseInt(letime / 60) / 60) / 24);
// 直接返回字符串格式:
// time = day + "天" + hour + "时" + min + "分" + second + "秒";
// 返回对象格式:
time = {
day: day,
hour: hour,
min: min,
second: second
}
}
}
}else {
second = parseInt(letime) % 60;
time = {
second: second
};
}
// 判断是否小于10,小于10就补零
if(time.day < 10) {
time.day = '0' + time.day
} else if(time.day == undefined) {
time.day = '00'
}
if(time.hour < 10) {
time.hour = '0' + time.hour
} else if(time.hour == undefined) {
time.hour = '00'
}
if(time.min < 10) {
time.min = '0' + time.min
} else if(time.min == undefined) {
time.min = '00'
}
if(time.second < 10) {
time.second = '0' + time.second
}
// 输出结果:
console.log('我是时间', times)
return time;
},
// 清除定时器
clearTimer() {
if(this.timer) {
// 清除定时器
clearInterval(this.timer);
this.timer = null;
this.getPinOrderDetail();//重载数据
this.getDetail();//重载数据
}
},
闭包
当两个函数彼此嵌套时,内部的函数就是闭包。
在js里面,函数属于对象,对象又是属性的集合,而属性的值又可以是对象,所以我们可以在函数内部再定义函数。
例如:函数A中定义了函数B,然后在函数外调用了B,这个过程就是闭包。(在项目中,这个非常常见)
var add = (function() {
var c = 1;
return () => {
return c++
}
})();
console.log("11111",add());
console.log("22222",add());
return
function funOne(){
var num = 0;
function funTwo(){
num++;
console.log(num);
}
return funTwo;
}
var fun = funOne();
fun();
fun();
fun();
fun();
解析一下:
num是外部函数在funOne中的变量,它的值在内部函数中被修改,
每执行一次就+1,根据闭包的特点,函数funOne()中的变量num会一直保存在内存中。
var funOne = (function(){
var num = 0;
return function(){
num++;
return num;
}
})();
console.log(funOne());
console.log(funOne());
console.log(funOne());
严格模式: 在js里的严格模式:模板的头上+ "use strict"。
另外-在ES6里,它本身就是严格的模式,严格方式都有哪些限制:
1. 变量必须声明后再使用
2. 函数的参数不能有同名属性,否则报错
3. 不能使用with语句
4. 不能对只读属性赋值,否则报错
5. 不能使用前缀0表示八进制数,否则报错
6. 不能删除不可删除的属性,否则报错
7. 不能删除变量delete prop ,会报错,只能删除属性 selete global[prop]
8. eval 不会在它的外层作用域引入变量
9. eval和arguments不能被重新赋值
10. arguments不会自动反映函数参数的变化
11. 不能使用arguments.callee
12. 不能使用arguments.caller
13. 禁止this指向全局对象
14. 不能使用fn.caller和fn.arguments获取函数调用的堆栈
15. 增加了保留字(比如protected、static和interface)
JSON数据
// 将 JSON 数据转换为 JSON 对象
var obj = JSON.parse(json);
//将数据转换成为JSON
var json = JSON.stringify(obj);
axios