免费网络推广网站网站开发招标方案范本

张小明 2026/1/1 10:22:50
免费网络推广网站,网站开发招标方案范本,北京网站开发周期,360免费建站官方目录 一、严格模式与非严格模式 二、双等于三等的区别 三、防抖和节流 四、原型和原型链 五、页面重绘和回流 六、script标签async和defer 七、普通函数和箭头函数的区别 八、JS闭包 1、闭包特点 2、闭包作用 3、闭包风险 4、运用场景 1#xff09;常见闭包 2常见闭包2实现模块化3缓存函数4封装私有变量5实现函数柯里化7防抖和节流一、严格模式与非严格模式在代码前加use strict或在class类里书写都会开启严格模式。开启严格模式后JS有以下变化变量1、变量使用前必须声明此时不声明就使用会直接报错2、不能直接用delete删除变量非严格模式的静默失败-严格模式的直接报错对象非严格模式静默失败-严格模式的直接报错enumerable 不会报错1、对象的属性也不能直接使用delete来进行删除了函数1、参数必须唯一非严格模式支持参数重复2、实参和形参不再具有映射关系非严格模式的arguments实参被修改形参也会对应更改在严格模式下这两种参数一方被修改另一方不会被一起更改3、不能使用argument的callee方法和caller4、eval、agument类似这样的关键词名不得作为标识符包括变量名、函数名等5、不允许使用eval()、with()这两个方法这两个方法可能带来风险6、不允许出现八机制数因为八机制数开头是0会有歧义7、普通函数在全局里的this变成了undefined(非严格模式时普通函数在全局里的this指向window)二、双等于三等的区别1、“”表示equality - 等同的意思“”两个等号使用时若两边值的类型不同时系统会先进行类型转换再进行比较2、“”表示identity - 恒等的意思“”三个等号使用时系统不会进行类型转换若类型不同就表示一定不等的3. 简单说明使用三个等号()的判断规则1如果类型不同就一定不相等2如果两个都是数值并且是同一个值那么相等如果其中至少一个是NaN那么不相等。判断一个值是否是NaN只能使用isNaN( ) 来判断3如果两个都是字符串每个位置的字符都一样那么相等否则不相等。4如果两个值都是true或是false那么相等5如果两个值都引用同一个对象或是函数那么相等否则不相等6如果两个值都是null或是undefined那么相等4. 简单说明使用两个等号()的判断规则1如果两个值类型相同再进行三个等号()的比较2如果两个值类型不同也有可能相等需根据以下规则进行类型转换在比较1如果一个是null一个是undefined那么相等2如果一个是字符串一个是数值把字符串转换成数值之后再进行比较3另外两个NaN是不相等的。三、防抖和节流**防抖**单位时间内频繁触发事件只执行最后一次常见场景输入框输入若频繁监听可能会出现抖动情况解决方案有二一是在输入结束后再点击触发事件而是通过防抖操作解决。利用定时器可以实现防抖的功能每次触发先清掉以前的定时器。**节流**单位时间内频繁触发事件只触发一次常见场景高频事件、快速点击、鼠标滑动监听、resize事件、scroll事件类比场景火箭发射代码实现利用定时器定时器执行完毕再开启定时器不要打断第三方库也可实现lodash库利用里面的debounce防抖和throttle节流来做。代码实现见文章最后部分闭包的7里的代码。四、原型和原型链原型每个普通函数都有prototype属性称为原型。因为这个属性的值是一个对象所以也叫原型对象。作用1、存放一些属性和方法共享给实例对象使用2、在JavaScript中实现继承如function Person(name, age) { this.name name this.age age } function Male() { } Male.prototype new Person() //实现继承 const mannew Male() console.log(man)__proto__:每个对象都有__proto__属性作用这个属性指向它的原型对象原型链对象都有__proto__属性这个属性指向它的原型对象原型对象也是对象也有__proto__属性。原型对象的__proto__指向原型对象的原型对象这样一层层形成的链式结构称为原型链。最顶层Object的prototype的__proto__指向null, 到null结束。常见场景调用某个对象的方法若在对象的最近一级有该方法就直接调用若没有就继续往上一级查找找到后调用。案例function Person() { } const personnew Person() person.\_\_proto\_\_Person.prototype //true person.\_\_proto\_\_.constructorPerson.prototype.constructor //true person.constructorPerson //true Person.prototype.constructorperson.constructor //true更多关于prototype见这篇前端 JS面向对象 原型 prototype-CSDN博客五、页面重绘和回流重绘当元素的视觉效果发生变化但几何属性如位置和大小没有改变时浏览器会重新绘制元素。这包括改变元素的背景色、边框色、字体颜色等‌。回流当元素的布局属性发生变化时浏览器需要重新计算元素的位置和大小并更新页面布局。这包括添加、删除或重新排列DOM节点修改元素的尺寸、位置或样式等‌。回流是一个相对昂贵的操作因为它涉及到大量的计算和重新布局频繁触发回流会导致性能问题尤其是在处理复杂或大型的DOM结构时‌。何时引起重绘1、视觉属性变化时如颜色、背景、边框色、阴影色、文字内容颜色等发生改变时2、元素尺寸和位置不变时重绘发生在元素尺寸和位置不变的情况下只改变元素的外观属性如背景颜色、字体颜色等3、元素隐藏时将元素的visibility属性设置为hidden时虽然会触发重排但不会影响布局只会触发重绘。何时会引起回流1、添加或删除可见的Dom元素2、元素位置发生变化3、元素尺寸发生变化 包括外边距、内边距、边距大小、高度和宽度等4、内容发送变化比如文本变化或图片被另一个不同尺寸的图片代替5、浏览器窗口尺寸发生变化因为回流是根据视口大小来元素位置和大小的回流和重绘的联系回流一定引起重绘而重绘不一定会回流。六、script标签async和deferscript 标签JS 执行顺序是否阻塞解析 HTMLDOMContentLoaded回调1、默认情况下遇到script标签会阻塞下面HTML的解析先解析完成script标签里的内容再继续执行解析。同步解析依次进行2、async情况下遇到script标签系统不会阻塞HTML的解析而是创建一个异步路径来进行async脚本的解析。一边解析HTML一遍解析async当async解析完毕后系统才会阻塞HTML的解析并立即执行async script里的内容。解析时不阻塞HTML解析解析完毕执行时才阻塞HTML两个解析相互独立进行3、defer情况下不会阻塞HTML解析直到HTML解析完毕后defer在最后执行。DOM元素渲染完毕后执行使用情景1、默认情况适合一般脚本的顺序执行2、async情况适合处理一些无需阻塞并且与DOM元素无关的操作。注这种情况下执行DOM元素的操作是不稳定的。当DOM元素很少时可能async有时会比HTML晚解析慢从而后执行有时执行正常有时执行失败。但当DOM元素过大需要更多时间解析时很可能async都已经开始执行了但DOM还未解析完毕当async里的代码操作DOM元素时就可能出现获取不到DOM元素的情况3、defer情况适合需要在页面加载完毕后的代码执行如需要操作DOM的脚本执行。七、普通函数和箭头函数的区别1、this绑定箭头函数没有自己的this上下文而是继承父类的this; 不能使用apply、bind、call来修改this指向箭头函数的this在定义时就已确定之后不得修改普通函数this取决于函数的调用方式。补充在全局状态下非严格模式this是window严格模式下this是undefined2、arguments实参对象箭头不包含arguments;普通包含arguments对象 补充非严格模式下实参arguments是和形参进行映射的修改其中一个对应都会改变严格模式下并未有映射修改其一不会修改另一个对应3、作用域和闭包箭头遵循作用域规则 (块级作用域)普通形成闭包八、JS闭包JavaScript的普通函数就是一个闭包。1、闭包特点1函数嵌套函数2内层函数可以访问外层函数的变量和参数2、闭包作用1、防止变量和参数被垃圾回收机制回收变量持久化2、防止变量和参数被外部污染 变量只在内部可访问3、闭包风险滥用可能会造成内存泄漏。4、运用场景1常见闭包function makeCounter() { let counter 0 return function () { counter console.log(counter) } } const counter makeCounter() counter() //1 counter() //2 counter() //32实现模块化const myModule(function () { let count0 function increment(){ count } function reset(){ count0 } function getCount(){ return count } return { increment, reset, getCount } })() myModule.increment() console.log(myModule.getCount()) // 1 myModule.reset() console.log(myModule.getCount()) // 03缓存函数function memorize(fn) { const cache {} return function (arg) { if (arg in cache) { console.log(已调用缓存数据) return cache[arg] } else { const result fn(arg) cache[arg] result return result } } } function expensiveCalculation(num) { console.log(正在计算 num 的阶乘...) let result 1 for (let i 2; i num; i) { result * i } return result } const memorizedCalculation memorize(expensiveCalculation) console.log(memorizedCalculation(5)) //正在计算5的阶乘... 120 console.log(memorizedCalculation(5)) //已调用缓存数据 1204封装私有变量function createPerson(name, age) { let privateName name let privateAge age function getName() { return privateName } function setName(newName) { privateName newName } function getAge() { return privateAge } function setAge(newAge) { privateAge newAge } return { getName, setName, getAge, setAge } } const person createPerson(张三, 18) console.log(person.getName()) //张三 console.log(person.getAge()) //18 person.setName(李四) person.setAge(20) console.log(person.getName()) //李四 console.log(person.getAge()) //205实现函数柯里化function add(a, b, c, d) { return a b c d } function curry(fn) { return function curried(...args) { if (args.length fn.length) { return fn.apply(this, args) } else { return function (...moreArgs) { return curried.apply(this, args.concat(moreArgs)) } } } } const curriedAdd curry(add) console.log(curriedAdd(1)(2)(3)(4)) //10 console.log(curriedAdd(1, 2)(3, 4)) //10 console.log(curriedAdd(1, 2, 3, 4)) //107防抖和节流function debounce(fn, wait) { let timeoutId return function (...args) { clearTimeout(timeoutId) timeoutId setTimeout(() { fn.apply(this, args) }, wait) } } function throttle(fn, wait) { let isThrottled false return function (...args) { if (!isThrottled) { isThrottled true setTimeout(() { fn.apply(this, args) isThrottled false }, wait) } } } function handleInput() { console.log(input changed) } const debouncedHandleInput debounce(handleInput, 500) const throttleHandleInput throttle(handleInput, 500) document.querySelector(input).addEventListener(input, debouncedHandleInput) document.querySelector(button).addEventListener(click, throttleHandleInput)总结到此2025开年AI技术打得火热正在改变前端人的职业命运阿里云核心业务全部接入Agent体系字节跳动30%前端岗位要求大模型开发能力腾讯、京东、百度开放招聘技术岗80%与AI相关……大模型正在重构技术开发范式传统CRUD开发模式正在被AI原生应用取代最残忍的是业务面临转型领导要求用RAG优化知识库检索你不会带AI团队微调大模型要准备多少数据你不懂想转型大模型应用开发工程师等相关岗没项目实操经验……这不是技术焦虑而是职业生存危机曾经React、Vue等热门的开发框架已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地未来企业更看重能用AI大模型技术重构业务流的技术人。如今技术圈降薪裁员频频爆发传统岗位大批缩水相反AI相关技术岗疯狂扩招薪资逆势上涨150%大厂老板们甚至开出70-100W年薪挖掘AI大模型人才不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态吸引了很多人的关注和兴趣也有很多新人小白想要学习入门大模型那么如何入门大模型呢下面给大家分享一份2025最新版的大模型学习路线帮助新人小白更系统、更快速的学习大模型2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开通后凡科网是干嘛用的

SJTUBeamer:快速打造专业学术演示的终极解决方案 【免费下载链接】SJTUBeamer 上海交通大学 Beamer 模版 | Beamer template for Shanghai Jiao Tong University 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUBeamer 在当今学术研究和教学活动中&#x…

张小明 2025/12/28 15:38:56 网站建设

创新的做pc端网站交互式网站

终极Hackintosh EFI自动化配置完全指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置流程而困扰吗?面对繁琐的…

张小明 2025/12/29 1:44:33 网站建设

关键词排名网站怎么分析一个网站seo

第一章:Open-AutoGLM 汽车保养提醒 汽车保养是保障车辆性能与寿命的关键环节。Open-AutoGLM 是一款基于开源大语言模型的智能汽车保养提醒系统,能够根据车辆使用数据、行驶里程和环境条件,自动生成个性化的保养建议。该系统通过融合车载OBD数…

张小明 2025/12/25 0:03:46 网站建设

seo网站优化价格地推接单在哪个平台找

Excalidraw手绘风格背后的用户体验设计哲学 在远程会议的共享屏幕中,我们常看到这样一幕:一位工程师正试图用标准流程图解释系统架构,线条笔直、颜色规整,却让听众频频走神。而当他在Excalidraw上随手画出几个歪歪扭扭的方框和曲…

张小明 2025/12/25 0:02:43 网站建设

长沙企业网站建设公司工程信息服务平台

扩展开发实践:为代码依赖分析工具添加编程语言支持的技术挑战与解决方案 【免费下载链接】dependency-cruiser Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD. 项目地址: https://gitcode.com/gh_…

张小明 2025/12/27 15:07:35 网站建设

高淳建设局网站博客网站主页代码html

你想知道除了直接通过类名修改类变量之外的其他可行方式,以下是多种实用方法,涵盖不同场景,附原理和完整可运行示例:一、通过实例间接操作类(绕过实例命名空间,不创建实例变量)这类方法的核心是…

张小明 2025/12/25 0:00:34 网站建设