前端HTML基础JS

121 阅读3分钟

前端HTML基础JS

数组操作

数组常见方法

数组的增、删、改、查

增push(常用)、unshift(常用)、splice(常用)、concat(常用)

删pop(常用)、shift(常用)、splice(常用)、slice(常用)

改 splice()

查 indexOf() 、includes() 、find()

排序方法 reverse()、sort()

转换方法 join()

迭代方法 some();、every()、forEach(常用)、filter()、map(常用);

字符串操作

增、删、改、查

增 concat() 与数组中concat一样

删 slice()、substr()、substring()

改 trim()、trimLeft()、trimRight()、repeat()、padStart()、padEnd()、tolowerCase()、toUpperCase()

查 chatAt()、indexOf()、startWith()、include()

转换 split()

模板匹配方法math()、search()、replace()

数据类型转换

执行上面的代码,很明显执行结果为false,因为数字类型不能和字符串进行比较,但转换数据后就可以进行比较

显示转换Number()、String()、Boolean()、parselnt()

Number()

Number转换的时候是很严格的,只要有一个字符无法转成数值,整个字符串就会被转为NaN

String()

可以将任意类型的值转化成字符串

Boolean()

ParseInt()

隐式转换 (==、 != 、>、<)、if、while (+、-、*、%)

拷贝

Object.assign()

slice()

concat()

扩展运算符

深拷贝_.cloneDeep()、jQuery.extend()、JSON.stringify()、手写循环递归

深拷贝开辟一个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性

_.cloneDeep()

jQuery.extend()

JSON.stringify()

递归循环

浅拷贝和深拷贝都创建出一个新的对象,但在复制对象属性的时候,行为就不一样

浅拷贝只复制属性指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存,修改对象属性会影响原对象

闭包

闭包就是一个函数对其周围状态的应用捆绑在一起,这样的组合叫做闭包

闭包的作用额和使用场景

1、创建私有变量

2、延长变量的生命周期

柯里化的目的在于避免频繁调用具有相同参数函数的同时,又能够轻松的重用

两个计数器 Counter1 和 Counter2 是如何维护它们各自的独立性的。每个闭包都是引用各自的词法作用域内的变量 privateCounter。

注意事项:不是某些特定任务需要使用闭包,在其它函数中创建函数是不明智的,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响

this的指向

this关键志在JavaScript中的表现略有不同,在严格模式和非严格模式之间也会存在差异

this在函数的执行过程中,this一旦确认就不能进行更改

this的绑定关系

默认绑定

非严格模式:调用函数的对象在游览器中位window,因此this指向window,所以输出luckyjian

严格模式:不能将全局对象用于默认绑定,this会绑定到undefined,只有函数运行在非严格模式下,默认绑定才能绑定到全局对象

尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

new绑定

new关键字改变了this的指向

new过程遇到return一个对象,此时this指向为返回的对象

显示修改

apply()、call()、bind()是函数的一个方法,作用是改变函数的调用对象。它的第一个参数就表示改变后的调用这个函数的对象。因此,这时this指的就是这第一个参数

箭头函数

箭头函数的this能够在编译的时候就确定了this的指向,箭头函数不能作为构建函数

优先级关系

new绑定====》显式绑定====》隐式绑定 ===》默认绑定