JS
实现一个trim方法
trim方法用来去除句首和句尾的空格,可以用正则表达式实现。
- 或
|
字符的使用 \s
匹配一个空白字符,包括空格、制表符、换页符和换行符^
匹配输入的开始$
匹配输入的结束,*
匹配前一个表达式0次或多次,等价于{0,}g
全局搜索m
多行搜索
functon trim(s: string) {
const reg = /^\s*|\s*$/gm;
return s.replace(reg, '');
}
司徒正美大佬的全部实现:https://www.cnblogs.com/rubylouvre/archive/2009/09/18/1568794.html
JSONP的原理是什么?解决什么问题?
原理:script标签不受跨域影响,可以指向第三方的API网址
解决的问题:实现跨域请求数据
例子:
前端代码
<html>
<body>
<div>
receive <span id="qwerty"> </span>
</div>
</body>
<script>
function callfun(data) {
document.getElementById('qwerty').innerHTML = data;
}
</script>
<script src="http://127.0.0.1:10010/js?callParam=callfun"></script>
</html>
后端代码
'use strict';
const Controller = require('egg').Controller;
class JsonpController extends Controller {
async index() {
const { ctx } = this;
ctx.set('content-type', 'text/javascript');
ctx.body = ctx.query.callParam + '("跨域数据")';
}
}
后端通过查询参数callParam
得到回调函数名称,然后字符串拼接形成callfun("跨域数据")
这个函数调用,返回给前端,"跨域数据"
这个字符串就是跨域请求拿到的数据
用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值
let result = this.randomArr([]);
randomArr(arr: number[]) {
if(arr.length === 5) return arr;
let num = this.randomNumber();
if(!arr.includes(num)) {
arr.push(num)
};
return this.randomArr(arr);
}
randomNumber() {
return Math.random() * 32 + 2;
}