<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hellocoder2029的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hellocoder2029</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hellocoder2029]]></copyright><item><title><![CDATA[一文彻底搞懂前端缓存机制]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551720</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551720</guid><author>hellocoder2029</author><pubDate>Wed, 15 Mar 2023 12:57:20 +0800</pubDate><description><![CDATA[2）当强缓存没有命中的时候，浏览器一定会发送一个请求到服务器，通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存，如果协商缓存命中，服务器会将这个请求返回，但是不会返回这个资源的数据，而是告诉客户端可以直接从缓存中加载这个资源，于是浏览器就又会从自己的缓存中去加载这个资源；当强缓存未命中时，浏览器就会发送请求到服务器，服务器会验证协商缓存是否命中，如果协商缓存命中，请求返回的http状态为304，并会显示说明Not Modified，浏览器收到该返回后，就会从缓存中加载了。]]></description><category></category></item><item><title><![CDATA[拿到大厂前端offer的前端开发是怎么回答面试题的]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551681</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551681</guid><author>hellocoder2029</author><pubDate>Wed, 15 Mar 2023 12:55:38 +0800</pubDate><description><![CDATA[两个块级元素的上外边距和下外边距可能会合并（折叠）为一个外边距，其大小会取其中外边距值大的那个，这种行为就是外边距折叠。需要注意的是，浮动的元素和绝对定位这种脱离文档流的元素的外边距不会折叠。重叠只会出现在垂直方向。如果两者都是正数，那么就去最大者如果是一正一负，就会正值减去负值的绝对值两个都是负值时，用0减去两个中绝对值大的那个兄弟之间重叠和父子之间重叠（1）兄弟之间重叠float底部元素的position的值为（2）父子之间重叠子元素加入浮动属性或定位。]]></description><category></category></item><item><title><![CDATA[前端常考面试题整理]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551763</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551763</guid><author>hellocoder2029</author><pubDate>Wed, 15 Mar 2023 12:55:13 +0800</pubDate><description><![CDATA[插件系统是 Webpack 成功的一个关键性因素。在编译的整个生命周期中，Webpack 会触发许多事件钩子，Plugin 可以监听这些事件，根据需求在相应的时间点对打包内容进行定向的修改。// 注册插件时，会调用 apply 方法 // apply 方法接收 compiler 对象 // 通过 compiler 上提供的 Api，可以对事件进行监听，执行相应的操作 apply(compiler) {]]></description><category></category></item><item><title><![CDATA[一文读懂Js中的this指向]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551801</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129551801</guid><author>hellocoder2029</author><pubDate>Wed, 15 Mar 2023 12:55:03 +0800</pubDate><description><![CDATA[this关键字是一个非常重要的语法点。毫不夸张地说，不理解它的含义，大部分开发任务都无法完成。简单说，this就是属性或方法“当前”所在的对象。上面代码中，this就代表property属性当前所在的对象。下面是一个实际的例子。name : '张三' , describe : function() {return '姓名：' + this . name;} };person . describe() // "姓名：张三"上面代码中，this.name表示name属性所在的那个对象。由于。]]></description><category></category></item><item><title><![CDATA[js异步编程的三种模式]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129293581</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129293581</guid><author>hellocoder2029</author><pubDate>Thu, 02 Mar 2023 08:44:41 +0800</pubDate><description><![CDATA[javascript语言的执行环境是"单线程"(single thread)，就是指一次只能完成一件任务。如果有多个任务，就必须排队，等前面一个任务完成，再执行后面一个任务，以此类推。这种模式的好处是实现起来比较简单，执行环境相对单纯；坏处是只要有一个任务耗时很长，后面的任务都必须排队等着，会拖延整个程序的执行。]]></description><category></category></item><item><title><![CDATA[js对象和原型、原型链的关系]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129293529</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129293529</guid><author>hellocoder2029</author><pubDate>Thu, 02 Mar 2023 08:43:41 +0800</pubDate><description><![CDATA[JS的原型、原型链一直是比较难理解的内容，不少初学者甚至有一定经验的老鸟都不一定能完全说清楚，更多的"很可能"是一知半解，而这部分内容又是JS的核心内容，想要技术进阶的话肯定不能对这个概念一知半解，碰到问题靠“猜”，却不理解它的规则！]]></description><category></category></item><item><title><![CDATA[字节前端经典面试题（附答案）]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258513</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258513</guid><author>hellocoder2029</author><pubDate>Tue, 28 Feb 2023 11:49:29 +0800</pubDate><description><![CDATA[跨域问题其实就是浏览器的同源策略造成的。同源策略限制了从同一个源加载的文档或脚本如何与另一个源的资源进行交互。这是浏览器的一个用于隔离潜在恶意文件的重要的安全机制。协议端口号域名必须一致。同源策略：protocol（协议）、domain（域名）、port（端口）三者必须一致。当前域下的 js 脚本不能够访问其他域下的 cookie、localStorage 和 indexDB。当前域下的 js 脚本不能够操作访问操作其他域下的 DOM。当前域下 ajax 无法发送跨域请求。]]></description><category></category></item><item><title><![CDATA[js作用域、作用域链和它的一些优化]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258582</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258582</guid><author>hellocoder2029</author><pubDate>Tue, 28 Feb 2023 11:49:13 +0800</pubDate><description><![CDATA[随着JavaScript语言的发展，语言中的作用域的种类也变得丰富起来，不再局限于函数作用域作为最小变量声明范围来使用，而是可以基于更小范围的跨级作用域来管理我们的变量引用范围。变量的管理变得更加的灵活、安全。作用域链是作用域链嵌套的结构产物，所有变量标识符的解析和引用会沿着作用域链进行查找。而词法环境，是JavaScript对于作用域的内部技术实现。深入了解词法环境后，也让我们更清楚代码在解析变量标识符时的内部执行过程。也根据这个过程，我们大概总结出了两点关于作用域和变量使用的性能优化点。]]></description><category></category></item><item><title><![CDATA[前端二面经典面试题指南]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258625</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258625</guid><author>hellocoder2029</author><pubDate>Tue, 28 Feb 2023 11:47:29 +0800</pubDate><description><![CDATA[XSS 攻击指的是跨站脚本攻击，是一种代码注入攻击。攻击者通过在网站注入恶意脚本，使之在用户的浏览器上运行，从而盗取用户的信息如 cookie 等。XSS 的本质是因为网站没有对恶意代码进行过滤，与正常的代码混合在一起了，浏览器没有办法分辨哪些脚本是可信的，从而导致了恶意代码的执行。获取页面的数据，如DOM、cookie、localStorage；DOS攻击，发送合理请求，占用服务器资源，从而使用户无法访问服务器；破坏页面结构；流量劫持（将链接指向某网站）；]]></description><category></category></item><item><title><![CDATA[js函数式编程讲解]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258662</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129258662</guid><author>hellocoder2029</author><pubDate>Tue, 28 Feb 2023 11:47:17 +0800</pubDate><description><![CDATA[是一种编程范型，它将电脑运算视为数学上的函数计算，并且避免使用程序状态以及易变对象。函数式编程更加强调程序执行的结果而非执行的过程，倡导利用若干简单的执行单元让计算结果不断渐进，逐层推导复杂的运算，而不是设计一个复杂的执行过程。函数式编程的思维过程是完全不同的，它的着眼点是函数，而不是过程，它强调的是如何通过函数的组合变换去解决问题，而不是我通过写什么样的语句去解决问题。]]></description><category></category></item><item><title><![CDATA[javascript 高级编程之Array 用法总结]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241477</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241477</guid><author>hellocoder2029</author><pubDate>Mon, 27 Feb 2023 14:41:02 +0800</pubDate><description><![CDATA[引用类型是一种数据结构，用于将数据和功能联系起来。创建对象的方式：1.new操作符2.字面量表示法创建。]]></description><category></category></item><item><title><![CDATA[有哪些前端面试题是必须要掌握的]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241531</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241531</guid><author>hellocoder2029</author><pubDate>Mon, 27 Feb 2023 14:40:51 +0800</pubDate><description><![CDATA[/ 处理逻辑 })回调函数有一个致命的弱点，就是容易写出回调地狱（Callback hell）。// 处理逻辑 ajax(url1 ,() => {// 处理逻辑 ajax(url2 ,() => {// 处理逻辑 }) }) })// 处理逻辑 secondAjax() }) } function secondAjax() {// 处理逻辑 }) } ajax(url ,() => {// 处理逻辑 firstAjax() })以上的代码虽然看上去利于阅读了，但是还是没有解决根本问题。]]></description><category></category></item><item><title><![CDATA[javascript尾递归优化]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241597</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241597</guid><author>hellocoder2029</author><pubDate>Mon, 27 Feb 2023 14:40:22 +0800</pubDate><description><![CDATA[JS中的递归函数调用的时候，上下文栈是怎么变化的什么是递归优化递归优化的条件是什么手动优化一个递归代码。]]></description><category></category></item><item><title><![CDATA[高级前端面试题汇总]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241416</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129241416</guid><author>hellocoder2029</author><pubDate>Mon, 27 Feb 2023 14:39:52 +0800</pubDate><description><![CDATA[iframe 元素会创建包含另外一个文档的内联框架（即行内框架）。]]></description><category></category></item><item><title><![CDATA[2023前端面试知识点总结]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129193765</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129193765</guid><author>hellocoder2029</author><pubDate>Fri, 24 Feb 2023 09:07:24 +0800</pubDate><description><![CDATA[1）Promise基本特性1、Promise有三种状态：pending(进行中)、fulfilled(已成功)、rejected(已失败)2、Promise对象接受一个回调函数作为参数,  该回调函数接受两个参数，分别是成功时的回调resolve和失败时的回调reject；另外resolve的参数除了正常值以外，  还可能是一个Promise对象的实例；reject的参数通常是一个Error对象的实例。]]></description><category></category></item><item><title><![CDATA[JS词法环境和执行上下文]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/129193797</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/129193797</guid><author>hellocoder2029</author><pubDate>Fri, 24 Feb 2023 09:06:56 +0800</pubDate><description><![CDATA[JavaScript是一门解释性动态语言，但同时它也是一门充满神秘感的语言。如果要成为一名优秀的JS开发者，那么对JavaScript程序的内部执行原理要有所了解。本文以最新的ECMA规范中的第八章节为基础，理清JavaScript的词法环境和执行上下文的相关内容。这是理解JavaScript其他概念（let/const暂时性死区、变量提升、闭包等）的基础。本文参考的是最新发布的第十代ECMA-262标准，即ES2019。]]></description><category></category></item><item><title><![CDATA[细说Js中的this]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/128284951</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/128284951</guid><author>hellocoder2029</author><pubDate>Mon, 12 Dec 2022 11:59:21 +0800</pubDate><description><![CDATA[说的是执行上下文的thisbinding。this说的是当前函数的调用位置。这个是概念描述。下面通过上面的只是去分析各种情况下的thisbinding是什么东西。this 提供了一种更优雅的方式来隐式“传递”一个对象引用，因此可以将API设计得更加简洁并且易于复用。随着使用模式越来越复杂，显式传递上下文对象会让代码变得越来越混乱，使用 this 则不会这样箭头函数的this是绑定到父函数foo的，其实不是，只是沿用。因为箭头函数内部没有做任何的绑定操作。局部变量this。]]></description><category></category></item><item><title><![CDATA[细说js变量、作用域和垃圾回收]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/128285046</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/128285046</guid><author>hellocoder2029</author><pubDate>Mon, 12 Dec 2022 11:58:49 +0800</pubDate><description><![CDATA[某个执行环境中的所有代码执行完毕后，该环境将会被销毁，保存在其中的所有变量和函数定义也随之销毁，全局执行环境直至网页或浏览器关闭时才被销毁（ 如果存在闭包，情况又有所不同，会在后面几篇提到 😅，多谢 吴hr 指正）。在函数内部，最接近的环境就是函数的局部环境，若初始化变量时没有使用 var 声明，该变量会自动被添加到全局环境。其中基本类型是按值传递，而引用类型的值是按引用访问的，所以在操作对象时，实际上是在操作对象的引用而不是实际的对象 ( ps：在为对象添加属性时，操作的是实际的对象 )。]]></description><category></category></item><item><title><![CDATA[JS知识点梳理之作用域、作用域链、柯里化、闭包]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/128285083</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/128285083</guid><author>hellocoder2029</author><pubDate>Mon, 12 Dec 2022 11:57:03 +0800</pubDate><description><![CDATA[作用域是指 js 变量使用时所存在的一个区域，分为全局作用域（window）和局部作用域（function、setTimeout…等都会产生局部作用域）。当局部作用域变量名与全局作用域变量名重复时，局部变量会覆盖全局变量。在局部作用域使用变量时，如果在自己作用域找不到对应变量，则会往上一级作用域查找，直到全局作用域，如果全局作用域无此变量则会报 undefined。相反，全局作用域中无法使用局部作用域中的变量。上面这种一层层向外查询变量的过程叫做查询作用域链。]]></description><category></category></item><item><title><![CDATA[彻底搞懂JS原型与原型链]]></title><link>https://blog.youkuaiyun.com/hellocoder2029/article/details/128219642</link><guid>https://blog.youkuaiyun.com/hellocoder2029/article/details/128219642</guid><author>hellocoder2029</author><pubDate>Wed, 07 Dec 2022 14:35:20 +0800</pubDate><description><![CDATA[说到JavaScript的原型和原型链，相关文章已有不少，但是大都晦涩难懂。本文将换一个角度出发，先理解原型和原型链是什么，有什么作用，再去分析那些令人头疼的关系。原型和原型链都是来源于对象而服务于对象的概念，所以我们要先明确一点：JavaScript中一切引用类型都是对象，对象就是属性的集合。、、、、等都是引用类型。也就是说 数组是对象、函数是对象、正则是对象、对象还是对象。上面我们说到对象就是属性（property）的集合，有人可能要问不是还有方法吗？其实方法也是一种属性，因为它也是的表现形式，具体见下]]></description><category></category></item></channel></rss>