去除字符串中最后一个指定的字符
1 | /** |
把下划线字符串转化为驼峰
1 | /** |
把一个字符串大小写切换
1 | /** |
去除制表符
1 |
|
统计某一字符在另一个字符中出现的次数
1 | /** |
判断数据类型
1 | /** |
JS内置对象
- String,RegExp
- Array
- Number,BigInt,Math,Date
- Objcet
- Function
- Error
- JSON
- Map,Set,WeakMap,WeakSet
获取连接中的查询参数
1 | /** |
作用域的理解
正常情况下JS中的作用域是在编写代码时候决定的,编译器在编译的时候,通过词法分析知道标识符在哪里和如何声明,相当于已经有映射关系一样.
作用域就像是一个个气泡一样,标识符从属于哪个标识符,那么就只能在那个气泡范围内访问
- 全局作用域: 顶级作用域,任何地方都能访问到
- 函数作用域: 只能在函数内访问,闭包可以访问包围他的函数
- 块作用域: ES6新增的,只能在块内访问
什么是闭包
闭包可以访问另一个函数作用域的函数
闭包就是一个函数可以在脱离了声明函数的环境时还可以运行,并且可以调用当时环境内的变量
闭包以及当时声明环境的变量,保存在内存中,所以闭包是占用内存的
闭包可以防止变量污染作用域,作为函数内的私有变量
不主动释放的情况下,无法回收
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18function incrementNum() {
let num = 0;
return function () {
return (num += 1);
};
}
// 此处函数执行完毕后 没有其他引用 会被释放回收
console.log(incrementNum()()); //1
console.log(incrementNum()()); //1
// 此处被fn引用,闭包以及变量一直保存在内存中,没有得到释放
var fn = incrementNum();
console.log(fn());
console.log(fn());
console.log(fn());
// 手动释放
fn = null;
数组去重
1 | const arr = [1, 3, 4, 2, 1, [1, 2, [5, 6]]]; |
返回顶部
1 | //更改scrollTop |
验证是否为中文
1 | /** |
快速打乱数组顺序
洗牌算法
- 倒序循环这个数组
- 取范围从1到n的随机数k
- k与n交换
- 直到循环至数组的首个元素
1 | Array.prototype.shuffle = function () { |
为什么10.toFixed(10)会报错
因为 JS 的解释器对 .
操作符产生了歧义。在 JS 中 .
可以表示小数和从对象中取值。在这个例子中, 由于 10 是整数,所以在 10.
默认是小数点,因此会报错
解决的办法有下面几种:
(10).toFixed(10)
10..toFixed(10)
内存泄露有哪些
- 死循环
- 过度递归
- 对页面中的一些 副作用没有清除
- 闭包