![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
卷尾猫
https://gitee.com/yylcode
展开
-
JavaScript 基于数组实现栈结构
// Method 方法,和某一个对象实例有联系的// function 函数// 封装栈类function Stack() { //栈中的属性 this.items = []; //栈的相关操作 //1、添加一个新元素到栈顶位置 push方法 // this.push = function (this) { // 给实例添加方法 // }; Stack.proto...原创 2020-05-05 11:20:53 · 392 阅读 · 0 评论 -
leetcode JavaScript 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置数组的每个元素代表你在该位置可以跳跃的最大长度判断你是否能够到达最后一个位置[2,3,1,1,4]trueletarr=[3,3,1,1,4]//一varcanJump=function(arr){if(arr.length==1)returntrue //数组长度为...原创 2020-05-04 22:28:05 · 306 阅读 · 0 评论 -
leetcode JavaScript水桶容积最大
传入一个数组,右边减去左边索引的差值 为宽左边和右边数值小的一个为高求水桶容积最大,也就是求 宽*高 最大的情况可以想象成要给坐标系,索引为x轴,数值为y轴,问:哪一个组合的封闭空间面积最大解决办法一let arr = [1,8,6,2,5,4,8,3,7]//方法1var maxArea = function (height) { let max = 0;...原创 2020-05-04 22:10:29 · 356 阅读 · 0 评论 -
JavaScript 原型对象学习记录,js new一个对象的过程
JavaScript 数据类型分为 基本类型,引用类型基本类型:string,number,Boolean,object,null,undefined引用类型:String,Number,Boolean,Object,Function,Array,Date,RegExp,Error每个对象都有内置属性prototype(原型),chrome里是 __proto__对象创...原创 2020-04-30 14:02:57 · 223 阅读 · 0 评论 -
JavaScript运算符typeof与instanceof学习记录
JavaScript中typeof 检测数据类型,输出类型的名称JavaScript有五种简单数据类型Undefined,Null,Boolean,Number,String复杂数据类型Object常见的检测结果typeof 检测数据类型,会返回一个小写字母的类型字符串,只需要一个操作数,操作数可以是简单数据类型或者函数或者对象JavaScrip...原创 2020-04-30 12:26:49 · 173 阅读 · 0 评论 -
记录JavaScript变量对调的七种方法
临时变量let a = 3, b = 5, c = b;b = a;a = c;加减法var a = 3, b = 5;a = a + b; //a=3+5=8b = a - b; //b=8-5=3a = a - b; //a=8-3=5数组索引值var a = 3, b = 5;a = [a,b]b = a[0...原创 2020-04-30 11:56:22 · 208 阅读 · 0 评论 -
JavaScript == 和 === 常见题目分析
== 相等运算符 会对左右两边的值进行类型转换=== 全等运算符 则不会进行类型转换eg:3==3 true number 33===3 true number 33=="3" true number3 == string3---->number33=== "3" false number 3 string...原创 2020-04-30 10:07:19 · 195 阅读 · 0 评论 -
JavaScript小数精度问题 0.1+0.2
JavaScript是2进制存储的,且存储长度是有限的0.1+0.20.1 转换为二进制0.1*2=0.2 00.2*2=0.4 00.4*2=0.8 0 --------0.8*2=1.6 10.6*2=1.2 10.2*2=0.4 0 ------------0.4*2=0....原创 2020-04-30 09:42:49 · 476 阅读 · 0 评论 -
给一个32位的有符号整数,范围[-2^31,2^31-1].对整数进行反转,考虑溢出和正负数问题,溢出返回0,正负不改变
题目:给一个32位的有符号整数,范围[-2^31,2^31-1].对整数进行反转,考虑溢出和正负数问题,溢出返回0,正负不改变第一种方法,数字=>字符串=>数组(反转)=>字符串=>数字function reverseNum(num) { const max = Math.pow(2, 31) - 1; //32 位最大整数 const min = Mat...原创 2020-04-29 23:37:25 · 713 阅读 · 0 评论 -
JavaScript 使用正则匹配以什么开头什么结尾的字符串
有一个字符串,要对字符串进行匹配,找到所有以 open 开头, over 结尾的字符串,并存在数组里var str = "fsadjfsfopendfassfoverfsadfopendfadsfsoverfsadfsfopendfasdfsfsover"var res = str.match(/\open.*?\over/g) // \s 会被识别成正则表达式 要进行转义...原创 2020-04-28 22:02:11 · 21531 阅读 · 0 评论 -
JavaScript中Null和undefined的区别
null 是一个表示 “无” 的对象,转为数值为 0 。 undefined 是一个表示 “无” 的原始值,转为数值为 NaN。 当声明的变量还未被初始化时,变量的默认值为undefined。 null 用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。 undefined 表示 “缺少值” 就是此处应该有一个值,但是还没有定义undefined典型用法变量被声...原创 2020-04-28 20:50:33 · 167 阅读 · 0 评论 -
原生JavaScript操作DOM
原生js操作DOM网页加载时,浏览器会创建页面的文档对象模型 Document Object Model通过js操作html元素,查找html元素:通过id查找var doc = document.getElementById('idName')通过class 类名查找var doc = document.getElementsByClassName('classNam...原创 2020-04-28 09:45:46 · 162 阅读 · 0 评论 -
快速排序的思想并实现一个快排
在数据集中,找一个基准点 建立两个数组,分别存储左边和右边的数组 利用递归进行下次比较//快排function quickSort(arr) { //数组只有一个数,不用操作直接返回 if(arr.length<=1){ return arr; } //数组长度大于1 //找到中间数的索引值,向下取整 let num = Math.floor(arr.leng...原创 2020-04-27 19:23:30 · 223 阅读 · 0 评论 -
前端跨域请求和解决方案
1. 什么是跨域请求前端开发中,常见的html标签:a,form,img,script,link,iframe以及ajax操作都可以指向一个资源地址或者说可以发起对一个资源的请求,这里的请求就存在同域请求还是跨域请求 跨域请求是指:当前发起请求的域与该请求指向的资源所在的域不一致(这里所有的域是协议,域名,和端口号的合集,同域就是协议、域名和端口号均相同,任何一个不同都是跨域)2....原创 2020-04-26 23:16:56 · 240 阅读 · 0 评论 -
JavaScript 中的函数防抖/节流
原理:触发一个事件,一定时间后再执行时间还没到又触发了一次,那就重新计算等待时间你站在门外,每次有人出去你就关门,会出现什么情况,一个人出去,门关一半又有人出,门就不能关了,这样就很麻烦解决方式:每次有人出去,隔五秒后你关门,你执行关门动作之前又有人出去,就重新计时这样就避免了频繁触发关门事件函数防抖解决什么问题开发中,onresize,scroll...原创 2020-04-25 17:50:30 · 155 阅读 · 0 评论 -
认识、掌握、并使用JavaScript Promise
Promise 是什么?Promise说的简单通俗一点就是一种写代码的方式,并且是用来写JavaScript编程中的异步代码的基本用法let p = new Promise((resolve,reject)=>{ // do something //满足某些条件执行resolve or reject if(条件){ resolve...原创 2020-04-25 14:59:17 · 112 阅读 · 0 评论 -
JavaScript Async/Await 详解
Async/Await 是什么?Async/Await 是编写异步程序的新方式,它实际上是基于Promise来实现的,他会让异步的代码写起来和同步代码一样Node也已经在7.6版本开始支持Async/Await使用方法学习它是如何使用的,采用了什么样神奇的语法糖在这之前,可以先看一个使用Promise的异步编程:使用axios模块异步获取一条数据function ...原创 2020-04-25 14:30:50 · 453 阅读 · 0 评论 -
JavaScript Object.keys()方法
最近在学习vue源码,实现Observer劫持并监听所有属性的时候,用到了Object.keys()方法,记录一下语法Object.keys(obj)参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组处理对象,返回可枚举的属性数组let person = { name : "zhangs", city : "x...原创 2020-04-24 23:19:27 · 377 阅读 · 0 评论 -
JavaScript Array filter() 方法
功能经过filter函数后会创建一个新的数组,回调函数返回的结果是一个boolean值,若结果为真,则返回匹配的项若结果为假,则返回一个空数组不会改变原有数组,返回的是过滤后的新数组写法数组对象.filter(function(currentVal,index,arrs){// to do something})特点filter函数遍历的元素范围在第一次...原创 2020-04-23 12:47:37 · 461 阅读 · 0 评论 -
JavaScript数组中的forEach以及map方法
forEach功能:循环遍历数组中的每一项,只能遍历数组//写法数组对象.forEach(function(参数变量名1,参数变量名2,参数变量名3)){ // 做一些操作,forEach 没有返回值,返回值为 undefined})特点: callback函数, 为数组中每个元素执行的函数,该函数接受三个参数* 变量参数名1 必选,表示的是数组中...原创 2020-04-23 12:28:29 · 426 阅读 · 0 评论 -
JavaScript es6 解构赋值
const person = { name = "zhangsan" age:12, city:"西安"}有对象person ,要获取里面的值,原来的方式是:const name = person.nameconst age = person.ageconst city = person.city这样获取值是很麻烦的,如果用解构的话怎么做:...原创 2020-04-22 23:17:43 · 140 阅读 · 0 评论 -
JavaScript代码输出结果-普通函数和箭头函数的this指向
const multi ={ num:10, twonum(){ console.log(this.num*2) }, threenum:()=>{ console.log(this.num*3) }}multi.twonum()multi.threenum()A: 20 and 30B: 20 ...原创 2020-04-21 19:22:52 · 172 阅读 · 0 评论 -
JavaScript代码输出结果-for循环、setTimeout、let、var
for(var i = 0 ;i<3;i++){ setTimeout(()=>console.log(i),1)}for (let i = 0; i < 3; i++) { setTimeout(()=>console.log(i),1)}A: 0 1 2 和 0 1 2B:0 1 2 和 3 3 3C: 3 3 3 和 0 1...原创 2020-04-21 19:07:19 · 809 阅读 · 0 评论 -
JavaScript代码输出结果-变量提升问题(答案和知识点详解)
1.下面代码的输出是什么function sayHi() { console.log(name) console.log(age) var name = "zhangsan" let age = 24}sayHi()A:zhangsan 和 undefinedB:zhangsan 和 ReferenceErrorC:ReferenceEr...原创 2020-04-21 18:53:33 · 587 阅读 · 0 评论 -
HTML5 几种本地存储方式 localStorage和sessionStorage的使用方法
1. 什么是本地存储客户端数据的存储2. 本地存储可以使用在哪里* 用户临时登录信息,用户页面配置,当前临时信息* 一些东西用户想要存起来,下次访问可以继续使用,但是服务器没必要浪费空间来存这些信息,此时就可以应用本地存储,存放在用户本地3. 本地存储的几种方式cookie一般最多只能存储4KB的数据,每次都会通过HTTP请求把cookie传送回服务器...原创 2020-04-19 18:55:58 · 437 阅读 · 0 评论 -
JavaScript 中 this 对象的理解
普通函数* this总是指向函数的直接调用者* 如果有new关键字,this指向new出来的实例对象* 在事件中,this指向触发这个事件的对象* IE下 attachEvent 中的this总是指向全局对象window* 箭头函数中,函数体内的this对象,就是定义时所在作用域的对象,而不是使用时所在的作用域的对象function foo () { c...原创 2020-04-19 13:14:21 · 219 阅读 · 0 评论 -
JavaScript如何实现一个类
构造函数法缺点,用到了this和prototype,编写复杂,可读性差function Per(name,age) { this.name = name; this.age = age;}Per.prototype.sell = function () { }var per = new Per('zhangsan',32);per.sell()ES6语...原创 2020-04-19 12:54:17 · 816 阅读 · 0 评论 -
JavaScript 怎么去创建对象
对象字面量var obj = {};new一个构造函数function Per(){}var p = new Per();p.name = "zhangsan";p.age = 25;p.address = function(){}new一个内置对象var obj = new Object()...原创 2020-04-19 12:48:11 · 90 阅读 · 0 评论 -
JavaScript数据类型检测
JavaScript 有几种类型基本数据类型:undefined、null、boolean、string、number、symbol(es6新数据类型)引用数据类型:object、array、function(统称为object)数据类型检测typeof 对于基本数据类型来说,除了null都可以显示正确的类型,typeof 对于对象来说,除了函数都会显示object...原创 2020-04-19 12:41:40 · 90 阅读 · 0 评论 -
Vue常见面试题和答案-part1
目录1.对MVVM原理的理解2.请说一下响应式数据的原理3.Vue中是如何检测数组变化的理解原理能改变数组的方法:4.为何vue采用异步渲染5.nextTick实现原理6.Vue中Computed的特点7.watch中的deep:true是如何实现的8.vue组件的生命周期掌握每个声明周期什么时候被调...原创 2020-04-15 21:21:28 · 580 阅读 · 0 评论 -
移动端px/rem换算
这是设计图为750, 设计图尺寸不同,更改相应设置即可。(function flexible (window, document) { var docEl = document.documentElement var dpr = window.devicePixelRatio || 1 // adjust body font size function setBodyFo...原创 2020-04-10 09:32:49 · 260 阅读 · 0 评论 -
js面试实战题目以及答案
1、下面代码的输出是什么?function demo () { var age; console.log(name) console.log(age) var name = "lili" age = 12}demo()变量在创建时会被提升,所以在打印时age,name,都已经被声明,但是未赋值。都为undefined;2、把上题的var换成let呢?...原创 2019-08-27 16:03:43 · 584 阅读 · 0 评论 -
Ajax详解
AJAX :asynchronous JavaScript and xml 。是一种创建交互式网页应用的网页开发技术。是一种用于创建快速动态网页的技术。让互联网资源的传输变得轻量和纯粹。一、 什么是ajax一种创建交互式网页应用的网页开发技术 使用异步方式与服务器通信,不需要打断用户的操作 在不刷新整个页面情况下,与服务器通信交互数据二、ajax原理是什么浏览器让...原创 2019-09-03 16:38:28 · 110 阅读 · 0 评论 -
一键返回顶部,不是瞬间回跳,效果要平滑
一键跳回顶部的功能很常见但是又不想效果平平不能一瞬间就跳回去过程要平滑,固定步长会让过程平滑很多代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=de...原创 2020-03-11 18:30:49 · 227 阅读 · 0 评论 -
JavaScript移除数组指定元素,操作原数组
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。var arr=[1,2,3,3,12,3,2,5];var item = 3;console.log(removeWithoutCopy(arr,item))function removeWithoutCopy(arr, item) { for(var i=0;i<...原创 2020-03-10 10:34:38 · 476 阅读 · 0 评论 -
JS查找元素在数组中的位置
有数组arr=[1,2,3,4,5],找出item = 3; 在arr中的位置,无则返回-1;代码:var arr = [1, 2, 3, 4, 5];var item = 3;console.log(IndexOf(arr, item));function IndexOf(arr, item) { return arr.indexOf(item);}按理说这样就可...原创 2020-03-10 10:21:48 · 9974 阅读 · 0 评论 -
不使用循环控制语句和迭代器实现从0~100的数组赋值
不能使用循环和迭代器创建数组不是问题的关键,关键就是解决数组元素从0到100的递增可以利用定时器,规定时间走一遍,每走一遍元素值增1进入定时器,给数组赋值,元素值增1,判断元素值是否自增到预定值满足需求后,对定时器进行清楚。代码如下:var arr = [];var i = 0;var set = setInterval(() => { a...原创 2020-03-10 09:51:55 · 2248 阅读 · 0 评论 -
JavaScript之this的五种绑定
一、JavaScript中this的绑定规则有五种:默认绑定 饮食绑定 显示绑定 new绑定 箭头函数绑定要明确的一点是调用位置是函数在代码中被调用的位置,而不是声明的位置。二、绑定规则2.1 默认绑定当一个函数没有明确的调用对象的时候,也就是单纯作为独立函数调用的时候,将对函数的this使用默认绑定:绑定到全局的window对象。 function demo...原创 2019-09-03 14:45:03 · 172 阅读 · 0 评论 -
JavaScript字符串操作,把短线(-)命名格式改变为驼峰命名
function humpName (params) { //分割字符串为数组 var arr = params.split(''); //判断数组第一个元素是否为 - 是的话删除 if (arr.indexOf('-') == 0) { arr.splice(0, 1) } //遍历数组,对每个元素进行判断 for (var i = 0; i &l...原创 2019-08-27 11:37:20 · 786 阅读 · 1 评论 -
JavaScript冒泡排序实现原理以及代码
冒泡排序:1,遍历数组,依次比较当前项和它的后面一项,把大的放在后面,每次遍历完最大的元素就在最后面,相当于一次冒泡2,把数组除了最后一项(最大值)外的剩余项按照1的方式,继续冒泡3,每次比较都能找出数组中的最大值,比较次数为数组长度减一次 // 冒泡排序function sortMao(arr){ for(let i = 0;i<arr.length-1;i++...原创 2019-07-31 09:27:26 · 208 阅读 · 0 评论