JS学习笔记
文章平均质量分 58
不另外加糖
小蜗牛也能登顶!
展开
-
JS实现每隔一秒打印一个数字
第一种:匿名函数自调用// 第一种:匿名自调用函数,构建闭包for(var i = 0;i < 4;i++){ (function(i){ setTimeout(()=>{ console.log(i) },1000*i) })(i)}第二种:let形成块级作用域// 第二种:letfor(let i = 0;i < 4;i++){ setTimeout(()=>{ console.log(i) },1000*原创 2021-08-29 17:01:03 · 2510 阅读 · 0 评论 -
promise例题
1、promise.then()传入的不是函数,会发生值穿透Promise.resolve(1) .then(2) .then(Promise.resolve(3)) .then(console.log)//1Promise.resolve(1) .then(function(){return 2}) .then(Promise.resolve(3)) //没有return相当于独立的promise,后续then不会接受到 .then(cons原创 2021-08-21 21:23:26 · 413 阅读 · 0 评论 -
判断对象是不是空对象的几种方式
1、JSON.stringify()var b = {}return JSON.stringify(b) === '{}'2、for...in for...in可以遍历对象及对象原型上的可枚举属性 注意:js中的基本包装类型的原型属性是不可枚举的,比如Object,Array,Number等function isEmpty(obj){ for(let n in obj){ return false } //排除null,undefi...原创 2021-08-18 18:05:13 · 827 阅读 · 0 评论 -
DOM性能优化
DOM的操作是十分宝贵的,因为它可能会引起回流和重绘,很耗性能,接下来介绍两种方法,可以优化DOM的性能。一、DOM查询做缓存//DOM操作不做缓存//每次循环都会获取一次DOMfor(var i = 0;i < document.getElementById('list');i++){ }//DOM操作缓存//先获取DOM元素,计算类数组长度var list= document.getElementById('list')var len = list.lengt..原创 2021-07-23 21:57:46 · 145 阅读 · 0 评论 -
类型转化一些易出错的面试题
一、如何实现下面代码var a = ???if(a == 1 && a == 2 && a == 3){ console.log(1)}//如何编写a才能打印出1 思路:要想正确打印出1,那么按照代码所示,就必须a既等于1,又等于2,又等于3,这样一看好像不太可能实现,但是我们发现a和这些数字进行比较的时候是==,会进行隐式转化,那么如果把a设计为复杂数据类型,这样每次进行隐式转化的时候都会调用valueof()方法,我们就能重写valueof().原创 2021-07-21 17:48:10 · 102 阅读 · 0 评论 -
内存泄露与内存溢出
一、什么是内存泄露 简单地说内存泄露就是在一块代码段里,不再使用的变量并没有及时释放清理掉,这就叫做nei'cun'x原创 2021-06-09 09:37:27 · 304 阅读 · 1 评论 -
JS的继承方式
一、原型继承思想:把子类构造函数的原型指向父类构造函数的实例//父类构造函数function Animal(name) { this.name = name || 'Animal'; this.sleep = function() { console.log(this.name + '正在睡觉!'); };}//原型上面的方法:Animal.prototype.eat = function(food) { console.log(this.name + '正在吃:' + foo原创 2021-07-16 19:29:37 · 89 阅读 · 0 评论 -
vue组件中的data必须是一个函数
在vue中,使用组件要先创建组件构造器,然后注册组件,相当于添加了一个组件构造器的引用,之后使用相当于实例化组件。 我们希望尽可能多的复用组件,就希望每个组件都有自己的data,但是由于每个复用的组件都是组件构造器的实例,它们会共享组件构造器的数据(个人理解),这时如果我们把data改为函数,利用函数形成自己的作用域,每个组件的data就不会相互影响了。 JS的原型链 两个对象都是某一构造函数的实例,那么它们能同时访问到构造函数显式原型上的数据var MyComponent...原创 2021-07-07 10:08:10 · 176 阅读 · 0 评论 -
Number的几种属性
1、Number.MAX_VALUE:表示JS中能表示的最大正数,若大于该数,则为Infinity2、Number.MIN_VALUE:表示JS中能表示的最小正数,若小于该数,则为03、Number.MAX_SAFE_INTEGER:JS中能表示的最大安全整数(),就是JS中能准确 区分两个不同值的最大上限,大于这个数,JS就不能准确区 ...原创 2021-07-04 11:42:39 · 837 阅读 · 0 评论 -
parseInt()
parseInt(numstring,radix) parseFloat(numstring,radix)将字符串转为指定进制数的整数或浮点数,若不能转化为进制数,则返回NAN numstring:字符换类型,要转化的数 radix:进制数默认为十进制(2-36之间),可选 若没有指定radix:a. 若numstring开头为1-9的数字,取默认情况十进制 b.numstring开头为0x,取十六进制 ...原创 2021-07-03 12:02:21 · 433 阅读 · 0 评论 -
头痛的函数柯里化
一、什么是函数柯里化 函数柯里化,最早接触他是因为bind函数,bind函数内部会在返回一个函数,供我们再调用。什么是柯里化呢? 函数柯里化指的是如果之前函数有多个参数,将函数变成一系列接收一个参数的函数。好难懂~~二、函数柯里化有啥用2.1 参数复用//下面是一个正则的校验,正常来说直接调用check函数就可以了,//但是如果我有很多地方都要校验是否有数字,//其实就是需要将第一个参数reg进行复用,//这样别的地方就能够直接调用hasNumber,hasLetter等函数..原创 2021-06-30 17:13:52 · 65 阅读 · 0 评论 -
简单版的防抖和节流
防抖和节流都是为了解决响应速度更不上触发频率,而出现的卡死,不流畅问题。 防抖:事件在触发n秒后会执行,如果n秒内事件再次被触发则重新计时//fn要进行防抖的函数function debounce(fn,delay){ let timeout = null, //设置定时器标识存放定时器 return function(){ //闭包保存定时器 clearTimeout(time...原创 2021-06-30 10:27:00 · 322 阅读 · 0 评论 -
JS的事件处理机制和事件委托
一、DOM事件流1.1 什么是DOM事件流 当在html元素中发生了一个事件,事件会在目标节点与根节点之间按照特定的顺序传播,沿途的所有节点都会接收到该事件,这个传播过程成为DOM事件流。 事件传播顺序:事件捕捉和事件冒泡 事件捕捉:从DOM树最顶层的元素传递到最准确的元素,由外向内 事件冒泡:从最确定的元素传递到最不确定的元素DOM2级事件规定DOM事件流包括事件捕捉阶段、目标阶段和冒泡阶段 由上图可知当事件发生时,先进行事件捕捉阶段从window一直传递...原创 2021-06-29 20:46:47 · 279 阅读 · 0 评论 -
js中的类数组对象
首先先介绍一下数组和对象是啥一、数组 数组是一个有序的数据集合,其索引值从0开始依次递增,有length属性,用于获取数组的元素个数,内部的值可以是任何js数据类型二、对象 对象是一个无序的内部由若干键值对组成的数据集合,它没有length属性,但是我们可以通过把它内部的键改为从0开始依次递增的值来模拟数组,这样就成了类数组对象三、类数组对象3.1 什么是类数组对象 类数组对象首先它是一个对象,但是有数组的某些特点。怎么构造类数组对象呢?先把对象中的键都改为从0开始...原创 2021-06-27 11:23:12 · 1084 阅读 · 0 评论 -
Object.defineProperty和Proxy
一、Object.defineProperty() 它可以用来给一个对象定义一个属性或者修改一个现有的属性,并且返回这个对象。原创 2021-06-21 11:33:39 · 1793 阅读 · 0 评论 -
commonJS、AMD、CMD和es6
以前的js不能实现模块化,于是有了commonjs规范,遵守commonjs规范的node.js,它不能在前端浏览器中使用,一般在服务器中使用较多。 y原创 2021-06-18 22:27:26 · 247 阅读 · 0 评论 -
进程、线程、浏览器内核
一、什么是进程进程是CPU分配资源的最小单位,是能拥有资源,独立运行的最小单元二、什么是线程线程是CPU调度的最小单位,一个进程可以包含多个线程原创 2021-06-15 17:02:19 · 146 阅读 · 0 评论 -
JS的单线程、同步异步任务
一、为什么JS要采用单线程 JS作为一门浏览器脚本语言,它主要的作用就是和用户交互,操作DOM,浏览器一次只给JS派发一个任务,如果可以同时执行原创 2021-06-15 15:32:07 · 369 阅读 · 0 评论 -
关于深浅拷贝的那些事儿(二)
手动实现深浅拷贝功能//------------------浅拷贝function isObject(obj){ return typeof obj === 'Object' && obj !== null //判断输入变量的类型,筛选出array和object}function shallowClone(obj){ if(!isObject) return obj var target = Array.isArray(obj) ? []原创 2021-06-15 10:13:22 · 119 阅读 · 0 评论 -
关于深浅拷贝的那些事儿(一)
个人学习笔记,很多不足一、赋值、浅拷贝、深拷贝的区别首先JS中主要分为两种数据类型,一种是基本数据类型,另一种是复杂数据类型,深浅拷贝zhen'dui'de原创 2021-06-11 11:31:39 · 152 阅读 · 0 评论 -
作用域、作用域链、执行上下文、执行上下文栈
一、作用域作用域是指函数或者变量可使用范围的区域,分为全局作用域、函数作用域和块作用域(ES6才有)。作用是隔离变量,让在不同作用域下的xiang'tong原创 2021-06-06 15:35:05 · 237 阅读 · 0 评论 -
JS里的类型转化
+和==涉及到隐式类型转换,*,-,/只能转化为Number类型一、==原创 2021-06-04 20:55:22 · 281 阅读 · 0 评论