常用function
Buffer.from()
const buf1 = Buffer.from('buffer');
console.log(buf1 ); //输出 : <Buffer 62 75 66 66 65 72>
console.log(buf1.toString());//输出 : buffer
const buf1 = Buffer.from('buffer','base64'); //常用编码ascii utf8 base64
console.log(buf1);//输出 :<Buffer 6e e7 df 7a>
substr substring
tostring //number转string
substr(start,length) //截取字符串到需求长度
substring(start,end) //取开始到结束的内容 不包括第 end个索引。索引从0开始。
Math
Math.ceil() //向上取整
Math.floor() //向下取整
Math.round() //四舍五入
Math.random()//0-1(double)
Math.random() * 9 //
Math.round(Math.random() * 9).toString()//随机整数
Math.max(10, 20); // 20 两个数之间的最大数
Math.pow(x,y) // 可返回 x 的 y 次幂的值。
toFixed()
NumberObject.toFixed(num) //把 NumberObject 四舍五入为指定num位的小数。
stringify parse
//JSON.stringify() 方法用于将 JavaScript 值 对象或数组转换为 JSON 字符串
JSON.stringify(Data)
var str = {"name":"菜鸟教程", "site":"http://www.runoob.com"}
document.write( str ); //输出 : [object Object]
str_pretty1 = JSON.stringify(str)
document.write( str_pretty1 );//输出 :{"name":"菜鸟教程","site":"http://www.runoob.com"}
//JSON.parse(data) 数据转换JSONObject。
var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
document.write( obj ); //输出 : [object Object]
replace
//返回一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
string.replace(regexp/substr,replacement)
三个参数:
let string='123456'
string.replace(0,1,"a")
console.log(string) //输出 a23456
match
//字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
stringObject.match(searchvalue)
stringObject.match(regexp)
//返回值:存放匹配结果的数组
Date() . getTime() 、时间格式化
var now = Number(new Date().getTime());// 得到的是毫秒数 时间戳
日期格式化 2021 02 01 12 36 02
let R=getRandomTime();
function getRandomTime() {
// 当前时间作为订单号和流水号
//now = Number(new Date().getTime()),//时间戳
let Year = new Date().getFullYear().toString(),
Month = ("0" +(new Date().getMonth() + 1).toString()).slice(-2),
day = ("0" + new Date().getDate().toString()).slice(-2),
Hours = ("0" + new Date().getHours().toString()).slice(-2),
Minutes = ("0" + new Date().getMinutes().toString()).slice(-2),
Seconds = ("0" + new Date().getSeconds().toString()).slice(-2);
let time =Year+Month+day+Hours+Minutes+Seconds
//let time =Year+"-"+Month+"-"+day+" "+Hours+":"+Minutes+":"+Seconds
return time
}
split join
split() //用于把一个字符串分割成字符串数组。
join(',') //用于把数组中的所有元素放入一个字符串 元素是通过指定的分隔符(如:,)进行分隔的。返回字符串
slice
.slice(start,end) //方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。不包括end
.slice(-2) //-2 指倒数第二个字符
push() unshift()
unshift() // 在数组起始位置添加元素
push() // 将新项添加到数组末尾
test()
//test() 方法用于检测一个字符串是否匹配某个模式.
RegExpObject.test(string) //返回值为 true false
parseInt
parseInt(string, radix) //解析一个字符串,并返回一个整数
Numer()
Number() //如果是布尔值,true和false会被转换为1和0
Number(null) // 0
Number(undefined) // NaN
Number('as') // NaN
Number("010") // 10 (前导的0会被忽略)
Number('as')===NaN //false js规定 NaN不等于NaN
isNaN
isNaN() //参数是数字返回 false 非数字值 true
trim()
string.trim() //方法用于删除字符串开头和结尾的空格
isInteger( )
isInteger(value) //用来检查数字是否是整数
lastIndexOf
string.lastIndexOf(searchvalue,start) //区分大小写 字符串值最后出现的位置
indexof()
stringObject.indexOf(searchvalue,fromindex)
// 返回某个指定的字符串值在字符串中首次出现的位置 检索从0开始 区分大小写
sort
[5,6,4,1,9].sort() //升序
[5,6,4,1,9].sort(function(a, b){return b - a}) //降序 [9, 6, 5, 4, 1]
includes
includes() //方法用于判断字符串是否包含指定的子字符串。
[5,8,177].includes(7) false
"5,8,177".includes(7) true
concat()
arrayObject.concat(arrayX,arrayX,......,arrayX)
//连接两个或者多个数组 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
function 和 ()=>{} 的区别
function fn1(x) {
return function(y) {
return x + y;
}
}
let fn1 = x => y => x + y;
function的级别最高 箭头函数定义函数的时候,需要var关键词
箭头函数一定要定义于调用之前
箭头函数没有自己的this,它里面的this是继承所属上下文中的this,而且使用call与apply都无法改变
普通函数的参数是arguments,而箭头函数是arg
箭头函数不能使用new生成构造函数,因为箭头函数没有prototype,而construct在prototype里面
break continue 区别
//break 语句“跳出”循环。
//continue 语句“跳过”循环中的一个迭代。
for (i = 0; i < 10; i++) {
if (i === 3) { break; }
text += "数字是 " + i + "<br>";
}
// 数字是 0 数字是 1 数字是 2
for (i = 0; i < 10; i++) {
if (i === 3) { continue; }
text += "数字是 " + i + "<br>";
}
//这个循环在 i=3 时跳过这一步:
数字是 0
数字是 1
数字是 2
数字是 4
数字是 5
数字是 6
数字是 7
数字是 8
数字是 9
Typeof
//typeof运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回'object'
console.log(typeof a); //'undefined'
console.log(typeof(true)); //'boolean'
console.log(typeof '123'); //'string'
console.log(typeof 123); //'number'
console.log(typeof NaN); //'number'
console.log(typeof null); //'object'
var obj = new String();
console.log(typeof(obj)); //'object'
instanceof()
//判断对象的具体类型 返回布尔值
arr = [1,2,3];
if(arr instanceof Array){
document.write("arr 是一个数组");
} else {
document.write("arr 不是一个数组");
}
Promise
//JavaScript 提供原生的Promise构造函数,用来生成 Promise 实例
var promise = new Promise(function (resolve, reject) {
// ...
if (/* 异步操作成功 */){//异步代码执行成功 才会调用resolve(...)
resolve(value);
} else { /* 异步操作失败 */
reject(new Error());
}
});
promise.then(onFulfilled, onRejected)
//对于已经实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和 reject 方法作为回调。
//promise.then() 是 promise 最为常用的方法。
async
// async隐式地返回一个promise 使用aync/await的话,catch能处理JSON.parse错误 可以同时处理同步和异步错误
//检测用户名
async function checkName(req, userName) {
return await new Promise((resolve, reject) => {
var phoneReg = /^\w{11}$/;
if (!phoneReg.test(userName)) {
resolve(0)
return false;
}
var sql = "select count(*) as count from `user` where UserName=@userName;";
req.newExamSystem.queryParam(sql, {userName: userName}, function (err,result){
if (err) {
} else {
resolve(result[0].count)
}
})
})
}
await
await关键字只能用在aync定义的函数内 只要await
声明的函数还没有返回,那么下面的程序是不会去执行的 等待返回再去执行
const demo = async ()=>{
let result = await new Promise((resolve, reject) => {
setTimeout(()=>{
resolve('我延迟了一秒')
}, 1000)
});
console.log('我由于上面的程序还没执行完,先不执行“等待一会”');
return result;
}
// demo的返回当做Promise
demo().then(result=>{
console.log('输出',result); // 输出 我延迟了一秒
})
const makeRequest = async () => {
try {
// this parse may fail
const data = JSON.parse(await getJSON())
console.log(data)
} catch (err) {
console.log(err)
}
}
const makeRequest = async () => {
const value1 = await promise1()
const value2 = await promise2(value1)
return promise3(value1, value2)
}
bodyParser.json( ) bodyParser.urlencoded( ) 区别
bodyParser.json( )
//解析req.body的数据 解析json格式的中间件。
//这个中间件能接受任何body中任何Unicode编码的字符。支持自动的解析gzip和 zlib。
bodyParser.urlencoded()
//解析form表单提交的数据 body中的urlencoded字符,
//只支持utf-8的编码的字符。同样也支持自动的解析gzip和 zlib