JavaScript学习
文章平均质量分 67
学习JS知识的专栏
赐你岁月如歌
想要成为很厉害的大人,和更可爱的小孩
展开
-
什么是函数式编程
函数式编程是声明式编程的一部分。javascript中的函数是第一类公民,这意味着函数是数据,你可以像保存变量一样在应用程序中保存、检索和传递这些函数。函数式编程有些核心的概念,如下:不可变性(Immutability)纯函数(Pure Functions)数据转换(Data Transformations)高阶函数 (Higher-Order Functions)递归组合不可变性(Immutability)不可变性意味着不可改变。 在函数式编程中,你无法更改数据,也不能更改。 如果要原创 2021-09-05 20:26:39 · 1864 阅读 · 0 评论 -
扁平数据结构转Tree型数据
看到这样一个题目:将以下数据按要求输出:let arr = [ {id: 1, name: '部门1', pid: 0}, {id: 2, name: '部门2', pid: 1}, {id: 3, name: '部门3', pid: 1}, {id: 4, name: '部门4', pid: 3}, {id: 5, name: '部门5', pid: 4},]输出结果:[ { "id": 1, "name": "原创 2021-08-15 21:14:12 · 409 阅读 · 0 评论 -
你不知道的javaScript读书笔记(十二)
笔记JavaScript 中的数组是通过数字索引的一组任意类型的值。字符串和数组类似,但是它们的 行为特征不同, 在将字符作为数组来处理时需要特别小心。 JavaScript 中的数字包括“整 数”和“浮点型”。基本类型中定义了几个特殊的值。null 类型只有一个值 null , undefined 类型也只有一个值 undefined 。 所有变量在赋值之 前默认值都是 undefined 。 void 运算符返回 undefined 。数 字 类 型 有 几 个 特 殊 值, 包 括 NaN (原创 2021-07-11 19:48:04 · 104 阅读 · 0 评论 -
你不知道的javaScript读书笔记(十一)
笔记JavaScript 有 七 种 内 置 类 型: null 、 undefined 、 boolean 、 number 、 string 、 object 和 symbol ,可以使用 typeof 运算符来查看。变量没有类型,但它们持有的值有类型。类型定义了值的行为特征。很多开发人员将 undefined 和 undeclared 混 为 一 谈, 但 在 JavaScript 中 它 们 是 两 码 事。 undefined 是值的一种。 undeclared 则表示变量还没有被声明过。原创 2021-06-27 20:37:58 · 74 阅读 · 0 评论 -
你不知道的javaScript读书笔记(九)
原型笔记:如果要访问对象中并不存在的一个属性, [[Get]] 操作(参见第 3 章)就会查找对象内部 [[Prototype]] 关联的对象。这个关联关系实际上定义了一条“原型链”(有点像嵌套的作用域链),在查找属性时会对它进行遍历。所有普通对象都有内置的 Object.prototype ,指向原型链的顶端(比如说全局作用域),如 果在原型链中找不到指定的属性就会停止。 toString() 、 valueOf() 和其他一些通用的功能 都存在于 Object.prototype 对象上,因此语言原创 2021-06-06 22:50:53 · 90 阅读 · 1 评论 -
session、token和cookie介绍
HTTP是无状态的,什么叫无状态?意思是HTTP不会记住用户,即使你刚刚才使用账号密码登录过系统,下一次请求,还得再次校验你的身份。常用做身份校验的方式有session和token,他们有各自的优缺点,可能有人质疑说还有cookie,cookie只是用来存储数据的载体。session认证机制session认证机制:用户使用账号密码登录服务器服务器生成一个session对象和与之对应的sessionid,用来记录用户的会话信息,并将sessionid返回给浏览器,浏览器可以使用cookie、loc原创 2021-04-05 17:14:12 · 88 阅读 · 0 评论 -
js实现深度优先遍历和广度优先遍历
提出需求今天逛公司文档发现有一道面试题,有下面一个对象,通过深度优先遍历和广度优先遍历查找到某一个节点的值var tree = { name: "中国", children: [ { name: "北京", children: [ { name: "朝阳群众", }, { name: "海淀区",原创 2021-03-26 15:40:29 · 811 阅读 · 4 评论 -
前端经典面试题:深拷贝和浅拷贝
一、写在前面在任何编程语言中,都存在深拷贝和浅拷贝的概念,js当然也不例外。在对一个现有对象进行拷贝的时候是有深拷贝和浅拷贝之说的,他们在实际使用中区别还是挺大的,如果不弄清原因,可能在工作中遇到错误不好排查。二、什么是深拷贝和浅拷贝首先需要明白的一点是:深拷贝和浅拷贝针对的是对象进行操作的。那么就先来看看深拷贝和浅拷贝的具体概念。在js中,除了基本数据类型以外,还存在引用数据类型。而在一般使用赋值语句=的时候。对于基本数据类型,实际上只是拷贝它的值,但是对于对象而言,其实赋值的是这个对象的内存引用原创 2021-03-19 15:45:22 · 2120 阅读 · 2 评论 -
ES6中const声明的变量真的不可修改吗
在学习ES6新特性时,看到const和let的区别中,有一个明显的区别就是const声明的变量在后面是不可以修改的而let声明的变量是可以修改的。这让我产生了疑惑,const声明的变量真的不可修改吗?,带着这个疑问,决定自己动手试一试。一、const声明常量时,是只读且不可修改的 const a = 3; console.log(a);//3 a = 5;//Uncaught TypeError: Assignment to constant variable(未捕获的TypeError原创 2021-03-07 17:42:26 · 3004 阅读 · 0 评论 -
ES6新特性Proxy
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,是对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。Proxy实例方法介绍get()方法get方法用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象、属性名和 proxy实例本身(严格地说,是操作行为所针对的对象),其中原创 2021-01-24 15:44:43 · 116 阅读 · 0 评论 -
跨域的解决办法
一、什么是跨域?在了解跨域之前首先要了解一下浏览器的同源策略。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略限制内容有:Cookie、LocalStorage、IndexedDB 等存储性内容DOM 节点AJAX 请求发送后,结果被浏览器拦截了常见跨域场景当协议、子域名、主域名、端口号中任意原创 2021-01-11 10:47:31 · 200 阅读 · 0 评论 -
HTTP状态码以及Get和Post的区别
什么是HTTPHTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP的最初目的是让研究者,共享知识信息,它是一种用于文档传输的协议。HTTP请求方法GET :获取资源HEAD:获取资源的元信息POST:提交/上传数据PUT:修改数据DELETE:删除资源(几乎用不到,一般发请求交给后端处理)CONNECT:建立连接渠道,用于代理服务器OPTIONS:列出可对资源实施的请求原创 2021-01-04 11:25:57 · 350 阅读 · 0 评论 -
在浏览器上输入URL到显示发生了什么
目录前言用户输入阶段发起URL请求阶段准备渲染进程阶段提交文档阶段页面渲染阶段前言相信很多人和我一样,在使用浏览器搜索或者浏览网页的时候,没有仔细的考虑在浏览器的地址栏输入网址或者搜索关键词之后,浏览器和服务器到底做了什么工作。下面是一个总体的过程,其中蓝色方块的过程会进行详细的解释。用户输入阶段合成 URL:用户输入URL,浏览器会根据用户输入的信息判断是搜索还是网址,如果是搜索内容,就将搜索内容 + 默认搜索引擎合成新的URL;如果用户输入的内容符合URL 规则,浏览器就会根据 URL 协原创 2020-12-26 11:22:22 · 155 阅读 · 0 评论 -
程序员的浪漫——Node.js实现通过邮件定时给女朋友发情话
Node.js是什么?Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine.Node.js是一个构建于谷歌V8引擎的JavaScript运行时环境。Node.js不是一门语言,不是库,不是框架Node.js是一个js运行时的环境Node.js可以解析和运行js代码,以前只有浏览器可以运行js,现在js可以完全脱离浏览器运行,一切都归功于Node.js。Node.js能做什么?Web服务器后台命令行工原创 2020-12-14 09:24:10 · 13422 阅读 · 4 评论 -
js函数以及this指向问题
一、函数的定义和调用函数的定义的有三种方式:自定义函数、函数表达式(字面量)以及利用new function的方法。1.1 自定义函数(命名函数)function fn() {}1.2 函数表达式(匿名函数,字面量方式)var fun = function () {}1.3 利用new Function(‘参数1’,‘参数2’,'函数体’)执行效率较低var f = new Function('a', 'b', 'console.log(a+b)');为什么说通过new的方式创建函数的原创 2020-12-07 11:21:54 · 184 阅读 · 0 评论 -
构造函数、实例、原型对象
一、简述三者的关系每创建一个函数,该函数都会自动带有一个prototype属性。该属性是一个指针,指向一个对象,该对象称之为原型对象(后期我们可以使用这个原型对象帮助我们在js中实现继承).原型对象上默认有一个属性constructor,该属性也是一个指针,指向其相关联的构造函数。通过调用构造函数产生的实例对象,都拥有一个内部属性,指向了原型对象。其实例对象能够访问原型对象上的所有属性和方法。下面用代码和图示来表示三者的关系: let ldh = new Star(); console.原创 2020-11-29 22:11:13 · 176 阅读 · 0 评论 -
es6常用的数组操作方法
越来越多的公司采用前后端分离的开发模式,前端的工作也不是简简单单的用div写几个HTML页面,更多的拿到后端反馈过来的数据,进行处理整合,然后再将数据展现出来。大多数情况下从后端请求过来的数据都是json包含多个对象的数组,下面我将前端常用的数组操作记录一下。(1)contact()contact()是连接两个数组的方法,连接两个数组并不会改变原数组,只会返回一个被连接数组的新的副本,所以需要有一个新的数组去接收,下面是将两个数组联合在一起的示例let arr1=[1,2,3]let arr2=[4转载 2020-08-23 21:07:27 · 3053 阅读 · 2 评论