JavaScript
小彭努力中
不积跬步,无以至千里
展开
-
JS中字符串常用方法(持续更新中)
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。replaceAll() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,该函数会替换所有匹配到的子字符串。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。原创 2024-03-28 09:11:32 · 1023 阅读 · 0 评论 -
== 操作符的强制类型转换规则?
对于==来说,如果对比双方的类型,就会进行。假如对比x和y是否相同,就会进行如下判断流程:首先会判断两者类型是否相同的话就比较两者的大小;类型不相同的话,就会进行类型转换;会先判断是否在对比null和undefined,是的话就会返回true判断两者类型是否为string和number,是的话就会将字符串转换为5.判断其中一方是否为boolean,是的话就会把boolean转为number再进行判断6.判断其中一方是否为object且另一方为stringnumber或者symbol,是的话就会把。原创 2024-01-26 10:18:49 · 403 阅读 · 1 评论 -
let、const、var的区别
块作用域由{ }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题:内层变量可能覆盖外层变量用来计数的循环变量泄露为全局变量var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。原创 2024-01-29 09:04:35 · 394 阅读 · 0 评论 -
判断数组的方式有哪些
通过Object.prototype.toString.call()做判断。通过Array.prototype.isPrototypeOf。通过ES6的Array.isArray()做判断。通过instanceof做判断。原创 2024-01-26 10:06:57 · 546 阅读 · 1 评论 -
数据类型检测的方式有哪些
其中数组、对象、null都会被判断为object,其他判断都正确。原创 2024-01-26 10:03:21 · 365 阅读 · 1 评论 -
如何获取安全的 undefined 值?
因为 undefined 是一个标识符,所以可以被当作变量来使用和赋值,但是这样会影响 undefined 的正常判断。表达式 void ___ 没有返回值,因此返回结果是 undefined。void 并不改变表达式的结果,只是让表达式不返回值。因此可以用 void 0 来获得 undefined。原创 2024-01-26 09:51:36 · 382 阅读 · 1 评论 -
null和undefined区别
undefined 在 JavaScript 中不是一个保留字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会影响对 undefined 值的判断。当对这两种类型使用 typeof 进行判断时,Null 类型化会返回 “object”,这是一个历史遗留的问题。当使用双等号对两种类型的值进行比较时会返回 true,使用三个等号时会返回 false。一般变量声明了但还没有定义的时候会返回 undefined,null主要用于赋值给一些可能会返回对象的变量,作为初始化。原创 2024-01-26 09:50:19 · 356 阅读 · 1 评论 -
JavaScript有哪些数据类型,它们的区别?
JavaScript共有八种数据类型,这些数据可以细分为和栈:原始数据类型(Undefined、Null、Boolean、Number、String,Symbol、BigInt)堆:引用数据类型(Object(对象、数组和函数))其中 Symbol 和 BigInt 是ES6 中新增的数据类型:Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。原创 2024-01-26 09:38:16 · 417 阅读 · 1 评论 -
object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别
Object.assign()方法接收的第一个参数作为目标对象,后面的所有参数作为源对象。然后把所有的源对象合并到目标对象中。它会修改了一个对象,因此会触发 ES6 setter。)使用它时,数组或对象中的每一个值都会被拷贝到一个新的数组或对象中。它不复制继承的属性或类的属性,但是它会复制ES6的 symbols 属性。可以看到,两者都是浅拷贝。原创 2024-01-26 09:28:04 · 479 阅读 · 1 评论 -
一篇文章带你真正搞懂“ES6箭头函数”
如果没有参数,就直接写一个空括号即可如果只有一个参数,可以省去参数的括号如果有多个参数,用逗号分割如果函数体的返回值只有一句,可以省略大括号如果函数体不需要返回值,且只有一句话,可以给这个语句前面加一个void关键字。箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。原创 2024-01-30 09:09:17 · 480 阅读 · 1 评论 -
扩展运算符的作用及使用场景
这里参数对象是个数组,数组里面的所有对象都是基础数据类型,将所有基础数据类型重新拷贝到新的数组中。对象要求不能直接修改,可以通过扩展运算符把修改路径的对象都复制一遍,然后产生一个新的对象返回。同样,如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。对象的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。数组的扩展运算符可以将一个数组转为用逗号分隔的参数序列,且每次只能展开一层数组。方法的第一个参数是目标对象,后面的参数都是源对象。原创 2024-01-31 09:15:56 · 451 阅读 · 0 评论 -
对于对象与数组的解构的理解
对象解构比数组结构稍微复杂一些,也更显强大。在解构对象时,是以属性的名称为匹配条件,来提取想要的数据的。最终,数组里的0、1、2索引位的元素值,精准地被映射到了左侧的第0、1、2个变量里去,这就是数组解构的工作模式。解构是 ES6 提供的一种新的提取数据的模式,这种模式能够从对象或数组里有针对性地拿到想要的数值。通过把中间位留空,可以顺利地把数组第一位和最后一位的值赋给 a、c 两个变量。这样就得到了 name 和 age 两个和 stu 平级的变量。原创 2024-02-01 09:04:16 · 519 阅读 · 1 评论