充满创造力和无限可能的JavaScript世界

127 阅读4分钟

基本语法

  • 数据类型和变量

变量 var 变量名 = 值;

分类(数据类型)

  1. string(字符串)
  2. number(数字)
  3. boolean(布尔)
  4. undefined(未定义)
  5. null(空)
  6. Symbol(符号)
  7. Biglnt(数值类型,表示任意精度的整数)
  8. 引用数据类型: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))

image.png

//2.索引 indexOf
var arr =[10,20,'30','d','e','f']
console.log("索引",arr.indexOf(20))

image.png

//3.末尾添加若干元素 push
var arr =[1,2,3,4]
console.log("末尾添加元素",arr.push(4))

image.png

//4.删除末尾元素 pop
var arr =[1,2,3,4]
console.log("删除末尾元素",arr.pop(1))

image.png

//5.头部添加若干元素 unshift
var arr =[1,2,3,4]
console.log("头部添加若干元素",arr.unshift('a','b'))

image.png

//6.删掉第一个元素 shift
var arr =[1,2,3,4]
console.log("删掉第一个元素",arr.shift(1))

image.png

//7.排序 sort
var arr =[2,1,4,3]
console.log("排序",arr.sort())

image.png

//8.反转 reverse
var arr =[2,1,4,3]
console.log("反转",arr.reverse())

image.png

//9.万能方法,指定的索引开始删除若干元素,然后再从该位置添加若干元素 splice
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("万能方法",arr.splice(2, 3, 'Google', 'Facebook'))
console.log("return",arr)

image.png

//10.把当前的Array和另一个Array连接起来,并返回一个新的Array  concat
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("连接",arr.concat(2, 3, 'Google', 'Facebook'))

image.png

//11.把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串 join
var arr =['ly','lyy','lyyy','lyyyy','lyyyyy']
console.log("连接起来",arr.join('-'))

image.png

//12.多维数组
var arr = [[1, 2, 3], [400, 500, 600], '-'];
console.log("取500",arr[1][1])

image.png

  • 对象

```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)

image.png

//in判断属性的存在
let name1='name' in ly;
console.log('name1',name1)

image.png

//判断当前ly这个对象自身拥有的 hasOwnProperty
let ly1=ly.hasOwnProperty('name'); 
console.log("ly1",ly1)

image.png

  • 条件判断
if ... else...
  • 循环
//初始条件、结束条件和递增条件来循环
var x = 0;
var i;
for (i=1; i<=10000; i++) {
    x = x + i;
}
console.log("x",x)

image.png

//索引来遍历数组
var arr = ['Apple', 'Google', 'Microsoft'];
    var i, x;
    for (i=0; i<arr.length; i++) {
        x = arr[i];
        console.log(x);
}

image.png

//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'
}

image.png

//要过滤掉对象继承的属性,用hasOwnProperty()来实现
var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); 
    }
}

image.png

//for ... in循环可以直接循环出Array的索引
var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i);
    console.log(a[i]);
}

image.png

//while只有一个判断条件,条件满足,就不断循环
var x = 0;
var n = 99;
while (n > 0) {
    x = x + n;
    n = n - 2;
}
x; 
console.log(x)

image.png

// do ... while每次循环完成的时候判断条件 循环体会至少执行1次
var n = 0;
do {
    n = n + 1;
} while (n < 100);
n;
console.log(n)

image.png

  • Map和Set
1.Map是一组键值对的结构,具有极快的查找速度
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
var mm= m.get('Michael'); 
console.log("mm",mm)

image.png

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)

image.png

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)

image.png

2.set没有重复的key
var s1 = new Set();
console.log(s1)
var s2 = new Set([1, 2, 3]);
console.log(s2)

image.png

//重复的话会被自动过滤
var s = new Set([1, 2, 3, 3, '3']);
console.log(s)

image.png

  • 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]);
}

image.png

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
    console.log(x);
}

image.png

var a = ['A', 'B', 'C'];
  a.name = 'Hello';
  for (var x of a) {
     console.log(x); 
}

image.png

//forEach()
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    console.log(element);
});

image.png

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});

image.png

var a = ['A', 'B', 'C'];
a.forEach(function (element) {
    console.log(element);
});

image.png

获取时间戳

1.Date.now()

2.Date.parse()

3.ValueOf()

4.getTime()

5.Number

1.Date.now()
//获取中国标准时间
var time = new Date();
console.log("时间",time)

image.png

2.Date.parse()
//不推荐这种方式
var time = Date.parse(new Date())
console.log("时间",time)

image.png

3.valueOf()
//对象的原始值获得准确的时间戳值
var  time = (new Date()).valueOf();
console.log("time",time)

image.png

4.getTime()
//通过原型方法直接获得当前时间的毫秒值
var time = new Date().getTime();
console.log("time",time)

image.png

5.Number()
var time = Number(new Date());
console.log("time",time)

image.png

js时间戳转时间

1.new Date(时间戳) 格式转化获得当前时间

var  time = new Date(1472048779952)
console.log("time",time)

image.png

2.生成'2022/1/18 上午10:09'格式

test(n){
var  time = new Date(parseInt(n)).toLocaleString().replace(/:\d{1,2}$/,'');
console.log("time",time)
},

image.png

var  time = new Date(parseInt(n)).toLocaleString().substr(0,14)
console.log("time",time) 

image.png

利用正则

var time = new Date(parseInt(n)).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
console.log("time",time) 

image.png

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) 

image.png

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) 

image.png

当前系统区域设置格式(toLocaleDateString和toLocaleTimeString)

var time = (new Date()).toLocaleDateString() + " " + (new Date()).toLocaleTimeString() 
console.log("time",time) 

image.png

普通字符串(toLocaleDateString和toTimeString)

var time = (new Date()).toDateString() + " " + (new Date()).toTimeString() 
console.log("time",time) 

image.png

格林威治标准时间(toGMTString)

var time = (new Date()).toGMTString() 
console.log("time",time) 

image.png

全球标准时间(toUTCString)

var time = (new Date()).toUTCString() 
console.log("time",time) 

image.png

Date对象字符串(toString)

var time =(new Date()).toString() 
console.log("time",time) 

image.png

Date对象构造函数

//参数说明
milliseconds - 距离JavaScript内部定义的起始时间197011日的毫秒数
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)197011日午夜之间的毫秒数(时间戳)
//日期设置类函数
setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳)
setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) setYear() 函数 -- 设置date对象的年份(真实年份减去1900)
//日期打印类函数
toDateString() 函数 -- 返回date对象的日期部分的字符串表示 
toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串 
toTimeString()函数 -- 返回date对象的时间部分的字符串 
toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
//日期解析类函数

Date.parse() 函数 -- 解析一个日期的字符串,并返回该日期距197011日午夜之间的毫秒数(时间戳) 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() 函数 -- 解析一个日期的字符串,并返回该日期距197011日午夜之间的毫秒数(时间戳) 
setDate() 函数 -- 设置date对象中月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setFullYear() 函数 -- 设置date对象中的年份,月份和天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setHours() 函数 -- 设置date对象的小时,分钟,秒和毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMilliseconds() 函数 -- 设置date对象的毫秒数,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMinutes() 函数 -- 设置date对象的分钟,秒,毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setMonth() 函数 -- 设置date对象中月份,天,并返回date对象距197011日午夜之间的毫秒数(时间戳)
setSeconds() 函数 -- 设置date对象中月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setTime() 函数 -- 使用毫秒数设置date对象,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCDate() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份的一天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCFullYear() 函数 -- 设置date对象中用世界标准时间(UTC)表示的年份,月份和天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCHours() 函数 --- 设置date对象中用世界标准时间(UTC)表示的小时,分钟,秒和毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCMilliseconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的毫秒数,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCMinutes() 函数 -- 设置date对象中用世界标准时间(UTC)表示的分钟,秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCMonth() 函数 -- 设置date对象中用世界标准时间(UTC)表示的月份,天,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setUTCSeconds() 函数 -- 设置date对象中用世界标准时间(UTC)表示的秒,毫秒,并返回date对象距197011日午夜之间的毫秒数(时间戳) 
setYear() 函数 -- 设置date对象的年份(真实年份减去1900) toDateString() 函数 -- 返回date对象的日期部分的字符串表示
toGMTString() 函数 -- 返回date对象的格林威治时间(GMT)的字符串表示 toLocaleDateString函数 -- 返回date对象的日期部分的本地化字符串 toLocaleTimeString函数 -- 返回date对象的时间部分的本地化字符串
toTimeString()函数 -- 返回date对象的时间部分的字符串 
toUTCString函数 -- 返回date对象的世界标准时间(UTC)的字符串表示
Date.UTC()函数 -- 返回date对象距世界标准时间(UTC)197011日午夜之间的毫秒数(时间戳)

正则表达式 (常见)

image.png

//匹配的是:以数字开头的字符串
let reg = /^\d/;
console.log(reg.test('name'));   //false
console.log(reg.test('2020name'));  //true
console.log(reg.test('name2020'));   //false

image.png

//匹配的是:以数字结尾的字符串
let reg = /\d$/;
console.log(reg.test('name')); //false
console.log(reg.test('2020name'));  //false
console.log(reg.test('name2020'));  //true

image.png

// ^/$ 两个都不加匹配的是:字符串中包含符合规则的内容即可
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

image.png

邮箱

规则:
邮箱的名字以‘数字字母下划线-.’几部分组成,但是-/.不能连续出现也不能作为开头 \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)

image.png

setInterval(function() {
 console.log('继续输出');
}, 1000);

image.png

倒计时

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

image.png

function funOne(){
    var num = 0;
    function funTwo(){
        num++;
        console.log(num);
    }
    return funTwo;
}
var fun = funOne();
fun();      
fun();      
fun();     
fun(); 

image.png

解析一下:
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());  

image.png

严格模式: 在js里的严格模式:模板的头上+ "use strict"。

另外-在ES6里,它本身就是严格的模式,严格方式都有哪些限制:

1. 变量必须声明后再使用
2. 函数的参数不能有同名属性,否则报错
3. 不能使用with语句
4. 不能对只读属性赋值,否则报错
5. 不能使用前缀0表示八进制数,否则报错
6. 不能删除不可删除的属性,否则报错
7. 不能删除变量delete prop ,会报错,只能删除属性 selete global[prop]
8. eval 不会在它的外层作用域引入变量
9. evalarguments不能被重新赋值
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

image.png