好,各位学前长同学,看一下这道填空题啊,他让你干啥了?给你一个数字的字母算,让你把这个数字的字母算改一下格式,每三位打个点啊,就这个意思,题是很简单的题啊,但是面对简单的题呢,我们最好玩一些花火出来,不然大家都写的一样,就记不住你啊, 那就变成路人甲,路人乙了是吧,还是搞点不一样的东西出来。那这一块呢,我们就尽量把代码弄的简洁一点啊,比方说一行写完 看一下啊,其实我要打点的话,其实就是来进行一个替换,把某一个位置的东西把它替换成啥了?替换成一个逗号 不就完了吗?对吧?所以说我们现在问题就是说,我如何来写这个正的表达式,我要把这个正的表达式匹配的东西替换成一个逗号,怎么写呢?当然不能直接写一个斜杠 d 啊,那不就把所有的这个数字替换成逗号了吗?变成这样子了,那显得是不行的啊。所以说我们要匹配的并不是数字本身,而是要匹配某一些位置,一些特殊的位置,那么这个时候是不是就会让你想到什么? 前瞻运算符是吧?因为前瞻运符的特点就是不消耗字符,我只匹配位置,所以呢,我们写上一个前瞻问号等号,对吧?写上一个前瞻,这就是前瞻运符。什么叫前瞻运符呢?就是你站在某一个位置往后看,你不要往前移动,不要消耗字符,就站着别动,往后看,看一下后边是不是满足某一种规则, 这就是前三。那这样子运行出来,你看一下是不是每个数字前面都打了一个点,为啥呀?你看随便找个位置吧,这个位置往后一看,看到了啥?是不是看到了这个?一,他是不是满足规则后面跟了一个什么数字?那么满足规则是不是就匹配上了?匹配上了是不是就提换成逗号了?那么对于其他的位置是不是一样的?对于这个位置往后一看,看到啥?看到零,那是不是满足规则是不是也匹配上了?对吧?所有的位置都匹配上了, 只不过呢,我们现在呢,不是要每一个位置前面打点,而是每三位打点,那是不是这个数字得出现三次,然后字母出来结束,是吧?保存,你看一下运行,你看只有这个位置打打点说明啥?说明在这个位置往前一看,后面是不是刚好是三位数字,然后字母出来结束?那有的说为什么要加这个结束符? 加结束符要出问题啊,你看不加结束符的话,那看到处都是点了,为啥呢?比方说你站在这个位置往后一看,看到啥?有没有三位数字?有。然后呢,站到这个位置往后一看,那是不是也能看到三位数字,对吧?他这么说有没有结束?这里有没有要求?说,这么说必须后边要结束,所以说就到处打点了,所以结束符呢?一定要加上啊,变成这样了, 所以说你这个技术呢,你说简单不简单?他的要求是很简单的,对吧?一是要求你有这样的知识,潜在的会一特殊情况呢,又不好解决了。第二呢,你要有运用这些知识解决问题的能力,对吧?知识和能力缺一不可其, 那他还要求啥?你给我想想。还要求啥?你扣八个脑袋想不出来还要求啥呀?不要求啥了,而你要拓展知识,特别是前端核心知识,同时要有运用知识的能力,就 好好来看我的大师课啊,大师课是完全免费的。那你就完事了,我跟你说,知识和能力的训练绝对不是说一两分钟几分钟十来分钟就能搞定的,他必须要成体系才行啊,不然的话脑袋里边全是零散的东西,一堆零件也拼凑不起来一个整体。临时大师课里边,你看每一节课基本上拿到就是一个小时,至少都是一个小时。 没办法啊,有那么多干货需要讲。而这里边的知识呢?我不是说从前端零开始讲起啊,整个大师课专门针对的是以前通过线下机构出来的,或者是以前通过自己在那里瞎琢磨瞎研究出来的,学出来的同学,整 个知识体系千疮百孔,有很大的漏洞。你是大师课里面就是专门来补这些漏洞的,这些核心知识的漏洞不补不上,你谈个职业发展那是不可能的事情啊,最好的解决是啥,就之前啥样,以后还啥样,那就是最好的解决了。所以你要在这个行业里边谋求发展,咱们大师课是一定是你的必修课, 你绝对绕不过去的啊。你干嘛要绕过去呢?这么好的课程。关键是目前的课呢,还可以免费领取。怎么领?在咱们账号主页点击头像进入账号主页给你提示,领就完事了啊。好,咱们接着把它写完啊,你看现在我们目前这个逗号的位置已经正确了,是吧?那么无非呢,就是我们要在这个位置也要加上逗号。那你想想这个位置有什么样的特点?是不是前粘一下,后边要出现连续的三位数字,是 吧?也就说这个三位数字呢,他可以出现一次,也可以出现多次。保存你看一下运行是不是就出来了? 你看这些位置是不是都有一个特点,后面的数字是不是连续的三次数字出现一次或多次?但是他有一个问题啊,有个问题就是前面多了一个点,前面多了点的话好办啊,就是我们不匹配单词边界,对吧?单词边界我们就不匹配了,好运行,看一下是不是正确了,对吧?连续三位打点一行代码就写完了啊。
粉丝8.5万获赞121.4万

你的代码报错了?别急,问题不大来,这是报错信息,前五十页都是没啥用的,真正有用的就是最后两页,其中还有一页是 nowpoint exception。 你 的代码报错了,不是我要故意提醒你, 但是呢,它就在这一段,这个函数这一行,这个字母这里有错误哦,你库没了,表也没了,锁印也没了,你先别问是哪一句出错的,先想想是什么时候备份的吧。 html, 我 这一半的代码都显示不正常,麻烦告诉我错误在哪。 哥们,你这不是还有一半能显示吗?能显示不就行了吗?嘿塞,哥们,忘了吧,准备好熬夜吧你。


java script 堪称尴尬的玩具,语言总在做他本不该承担的事。一九九五年, brandon i 仅用七天仓促造出 j s。 初衷只是做一门简易浏览器脚本语言,结果直接乱成一锅粥。二零零五年, r n d。 犯了一个史诗级的错误,他通过 note j s。 将 java script 带到了服务器端,做着事后都公开道歉,直言是自己的失误, and it's my fault, and i'm very sorry。 设计 j s。 的 初衷本只是浏览器弹窗骚扰用户 nice, 如今却硬被拿来做 electron 臃肿桌面应用 react native 卡顿移动端 express 不 稳定,后端接口 j f 圈有个离谱现状,每当 javascript 开发者遇到问题时,他们就会本能地创建一个全新的框架,并将其上传到 bhop rem 文件里全是表情包 m p m 包泛滥到离谱。作为弱类型玄学语言,逻辑完全脱离常识。 数组加对象返回字母串的数 object object 调换顺序直接变成数字零。两个对象相加,返回拼接字母串 object object object 数组相加返回空字母串 oh god please no。 更离谱规则,零等加空数组等加字母串零,但字母串零和空数组又不相等。 早年 netscape 随便找人做调研,硬生生搞出二加二等于二十二这种魔幻逻辑 生态奇葩到极致。 it's odd 这种只判断技术的极简库,每周下载量几十万,离谱归离谱,但作为干了十几年 js 的 开发来说,虽槽点拉满,但依然离不开,因为它实实在在养活了无数程序员。

好说一个 es 二零二五的特性哈,叫做 promise try, 这啥意思呢?就是我们以前啊,比方说有这么一个函数,这个函数呢,它可能是同步的,也可能是异步的,比方说我这里就随便写了一下啊,比方看这个代码啊,如果说这么一个随机数小于零点五的话,它就是同步函数,同步抛出一个错误,但是如果说这条件不满足的话,它又是一个异步函数, 存款还是可以遇到的,是吧?这个函数他封装里面,他有可能是同步的,有可能是异步的,这个道理很简单,你可能要验证他的参数,参数如果说不正确的话,那可能就直接报错了,他是个同步错误,那这个函数我们到时候用的时候咋用的就很麻烦, 你肯定不能这样子写啊,你就比方说,你这样子来一个成功失败,这样子行吗?肯定不行啊,因为他的错误是同步的,不是异步的,你看啊,运行 啊,目前是随机数到达,是吧?成功然后再运行一次啊,你看他是无法捕获到的,是啥?捕获的是这里的 promise 的 异步错误,但是它是个同步错误,所以说过去我们得怎么写呢?过去我们得这样子写啊,踹,然后呢?把这一坨放进去,对吧?然后它有可能有同步错误,也有可能有异步错误,异步错误这样子来获取,然后同步错误呢,就得用踹开起来获取, 对吧?那这里是失败,好,我们得这样子写,好运行看一下啊,成功,对吧?点击啊,再运行啊,你看,失败过去得这样子写,很麻烦,是吧?那么现在呢,有 promise 踹之后呢,我们就可以更加简洁的来书写哈。怎么来书写呢?就是使用 promise 踹把这个函数放进去, 然后呢统一处理成功和失败。好,这样子呢,他的同步错误也会到这里,异步错误呢也会到这里,那么这样子是不是对错误可以进行统一处理,对吧?啊,不过呢,我目前漏的环境是不支持这个新函数的哈。呃,我们把它放到浏览器里边来走,你看打印出来失败是不是走到这里,对吧?这样子呢,处理起来更加简洁一些。

不知道你有没有注意过一个有些反直觉的技术细节。当我们尝试在本地部署一些前沿的 ai 工具或者安装 codex 这样的开发者软件时,官方文档里经常出现这样一好命令, npm install。 如果你对技术稍有了解,可能会产生一个疑问, npm 的 全称通常被理解为 node package manager, 它是 java scrapp 生态里用来管理网页项目依赖的工具。那为什么一个原本用来写网页的工具,现在却能用来安装并在本地运行一个复杂的命令行软件? 很多习以为常的现象背后,往往藏着技术眼镜的深刻脉络。为了解答这个问题,我们需要顺藤摸瓜去重新认识一下 javascript 这门语言。它从哪里来,它和 javascript 是 什么关系,以及在这个大模型爆发的时代,它为什么依然扮演着直观重要的角色?保持思考,保持好奇。让我们从一九九五年讲起, 把时间拨回到一九九五年。那时的互联网还处在早期阶段,当时的网页更像一本静态的电子书,文字、图片、超链接。如果你在网页上填写一个表单, 哪怕只漏填了一个名字,都必须点击提交,把数据发回服务器,再用服务器返回一个新页面,告诉你出错了。这种每次交互都要等待互联网传输的企业,效率极低。浏览器迫切需要一种内置的脚本语言, 让网页在用户的本地电脑上就能具备交基本的交互能力。比如检验表单、弹出提示响应、鼠标点击。网警公司把这个任务交给了工程师 brian ash。 在 紧急的商业压迫下,他仅用十天的时间就设计出了这门语言的第一版原型。 由于诞生的过于仓促, java scrap 确实留下了不少设计上的妥协和背后人诟病的历史包袱。但从工程学的角度来讲,这其实是一次伟大的水乳主义胜利。他没有追求学院派的完美无缺,而是精准地解决了当时最迫切的问题,让网页火起来。 伴随 java scrap 诞生,还有一个至今流传的误解,它和 java 到底是什么关系?在这里我们可以直接给出结论,他们除了名字相似,在技术架构、设计理念 和应用场景上没有任何之间的血缘关系。 java 是 一门严谨、面向对象的系统编程语言,常用于大型企业后端金融系统和安卓底层。 而 java script 则是一门轻量级的,主要运行在浏览器的脚本语言。之所以名字如此接近,完全是出于商业化的考量。一九九五年的科技圈, java 是 当时最耀眼的明星。 网警公司为了推广自己的这门新语言,当时还叫 leave scrapped, 决定与 some 公司合作,把它改名为 java scrapped。 如果打比方, java 和 java scrapped 关系大概更像热狗和狗的关系,仅仅借用了一个字,但本质截然不同。 那么,抛开历史,我们该如何定义 javascript? 如果把一个现代网页比作生命体, html 是 它的股价定义的信息的结构, css 是 它的外表决定了视觉的呈现, 而 javascript 就是 它的神经系统和肌肉。当你在搜索引擎输入文字时,底部的自动联想。当你在视频网站发出的实时弹幕,或者在不刷新网页的情况下加载出的新内容。这些都是 javascript 在 背后默默工作, 让网页从单向传递信息的静态文档,跨越到能与用户双向互动的应用程序。现在,我们可以回到开头关于那个 npm 的 玄念了。在很长的一段时间里, javascript 是 被囚禁在浏览器和这个沙箱环境里的,它只能在操作网页上的五谷元素, 无法触碰电脑底层的系统和文件。直到二零零九年,技术界迎来了一个关键的转折, nodjs 诞生。 notes 把 java script 的 运行引擎从浏览器里拨出来,移植到了操作系统检测面。这使得 java script 获得了读取本地文件、操作网页端口响应系统命令的能力。一旦 java script 打破浏览器的界限, npm 的 定位也就随之改变。它不仅再是一个网页组建的下载器,而是变成一个可以分发任何 java script 程序的平台。当你执行 npm install 来安装一个命令行工具时, n p m 实际上是在下载基于 node js 编辑的程序,并自动将其关联到你的操作系统的系统路径中。这不是 n p m 越界了,而是 javascript 这门语言的边界被无限拖宽了。 随着 javascript 的 边界扩张,还被用来编辑越来越复杂的系统。但这门语言与生俱来的灵活性在大形象塑造中反而形成了隐患。在 javascript 中,一个变量可以随时在数字、文本和对象之间切换。 这种动态弱类型的特性导致很多错误只有在代码真正运行,甚至交给用户手中时才会暴露。为了解决这个问题,微软推出了 type script。 type script 并没有颠覆 javascript, 而是它的超级。它在 javascript 的 基础上增加了一套严密的静态类型检测系统。在代码运行前, type script 会像一位严谨的架构师,提前检查出参数类型是否匹配,对象属性是否拼错。 他补齐了 javascript 在 大型工程化开发中的短板,让这门语言既保留了生态的繁荣,又拥有了企业级的可信。 随着科技进入大模型时代, python 凭借其在数据科学和深度学习领域的积累,成为了训练 ai 模型的首选。很多人甚至认为 javascript 的 地位会被消弱。但在真实的行业中, 我们观察到一个截然相反的趋势, javascript 正在成为 ai 落地和 ai agent 开发中最关键的一环。为什么呢?因为如果说 python 是 负责构建 ai 的 大脑,那么 javascript 则是负责构建 ai 接触事件的感官和手脚。 当一个 ai agent 需要调用外部 api 或者实时天气搜索网页资料,或者渲染一个复杂的交互式数据图,表示 javascript 拥有这个视屏球上最庞大的 api 调用生态和最优秀的异步处理能力。 更重要的是,无论是 chat gpt 的 网页端,还是各种智能化的浏览器插件, ai 最终都需要在一个离用户最近的界面上呈现,而这个界面永远是前端技术的领地。 正如像 first 的 a s sdk, 其各种 webscript 驱动的 agent 的 框架正在成为连接大模型与终端用户的核心桥梁。在这个时代,思考和推理归 python, 而交互和行动归 javascript。 所以,今天我们到底该如何评价 java script? 它其实不是一门在象牙塔里被设计出的完美语言,但它绝对是生命力最顽强、生态最繁荣的语言 之一。它以极其低的门槛拥抱了无数初学者,又通过 node js 的 type script 接住了复杂工程的考验。它就像数字世界的一套通用讲述架,把浏览器、服务器开发者已经如一般的 ai 紧紧地联系在了一起。 下一次,当你在终端敲下 n p m in store 的 时候,你看到的也许不再是一条简单的指令,而是互联网底层逻辑不断,眼界不断突破边界的一段缩影。这就是 test lab。 让我们保持思考,保持好奇,下期再见。

好,今天哈,我就一步到位的把整个 ui 式的响应式系统给你讲明白,花几分钟时间啊,我们 ui 里边遇到了绝大部分 bug 都是跟响应式有关系,之所以这些问题难以解决,就是因为很多同学对响应式这一块理解的是不清不楚的,一开始接触了教程,他给你说了东西就是有问题的,导致了你很模糊, 其实这一块你要把它理解清楚,非常简单。咱们这里呢,举了一些例子啊,这些呢,都是我们平时遇到了常见的响应式丢失的问题。比方说我们看第一段代码,这里呢,有一个是属性啊, count 在 页面上用到了,它一开始指的是零, 然后呢,我又得到另外一个数据啊,他来自于呢,那个属性乘以二,他目前的值也是零,是吧?然后呢,页面上一个按钮啊,点击这个按钮呢,他传递的属性呢,会加一,那你想一想,如果说点击按钮会发生什么样的事?都来试一下啊,来走点击, 你会发现呢,上面这个数据增加了,下面这个数据呢,是没动的啊。这第一个简单例子,尽管有些同学已经知道了这个例子他问题的原因在哪, 但是呢,我还是要从头到尾给你讲一遍,因为后边还有这么多题啊。这就必须要说到唯一的数据响应时, 什么叫数据响应式啊?它的本质到底是啥?首先你需要把之前学过的那个东西给它忘干净,那不是啥好玩意,什么数据的响应式啊,它本质呢,是数据和函数的关联,这就叫数据响应式,不是什么数据变了,界面刷新那种说法是错的,至少说是不准确、不完整的,本质就是数据和函数的观点。 数据变化关联的函数重新运行,那么这里边就有两个关键点,一个是数据,一个是函数。分开说啊,首先这个数据是什么数据呢?并不是所有的数据,他有这么几个条件,一个是函数中读到的数据,比方说我这里有个数据,哎, 这里有个函数,哎,那你说这个函数跟这个数据有关联吗?不可能有关联的,这个函数里面都没用到这个数据,是吧?至少你得读到这个数据啊,不管你是打印读也好,还是直接读到这个数据啊,你得去读它呀,你不读,它的值是关联不上的。 其实就已经解释了很多了,比方说我们在界面里边,这里又有一个数据啊, c ray, 那 将来有一天 c 变化了,这个界面刷新吗?它不刷新,为啥呢?因为这里没读到啊,我们知道模板本质上是个啥,本质上是个 render 函数,对吧? 要把这个玩意想象成函数啊,在函数的运行期间创建虚拟节点,创建虚拟节点的时候读到了某一个数据,对不对?就是 render 函数在运行期间读没读,有些数据读到了 c, 没有,没有读到 c, 那 c 跟这个 render 函数关联上,没有就没有关联上,因此将来 c 变化了过后,这个 render 函数要不要重新运行?界面刷新并不会重新运行, 跟他没关系,是吧?所以第一个前提条件是你得有读道,那光读道就完了吗?还不行啊,你还得干嘛呢?还必须要保证这个数据本身是 响应式对象的某个属性,这不是随便的数据啊。比方说你这里有 a, 我 去读 a 会跟 a 关联吗?并不会跟 a 关联,因为这个 a 并不是响应式对象。那如果说你把它 a 呢?变成一个响应式对象,那这样子读它有关联吗?其实也没有关联,他的要求是啥?你要读到响应式对象的某个属性才行。你光读响应式对象本身它不会关联的, 从这个实线层面他就拦截不了我们叫做数据劫持嘛,对吧?堵他的时候,一旦收集改他的时候派发更新,你要做数据劫持,你对这个本身是没法做数据劫持的,只有针对他的属性成员才能去做数据劫持, 懂这意思吧?其实在背后啊,如果说你能够把整个 ui 的 响应式系统从头到尾手写一遍的话,这些一切的问题全都消失了。面试题随便他怎么问,他编的花样,问问上天都难不倒你,因为你自己都写出来了,你就好好来看我的大师课,大师课从头到尾带你手写了一遍, 就知道他是怎么回事了。这里边很多的设计极其巧妙,你把这套系统里边的一些思想、设计原则和思维模式带到平时工作开发当中,那对你们平时接触的一些业务开发,那就是碾压级别的, 那个复杂度都不在一个层次上。我们写公共代码,写框架呀,跟我们写业务代码那完全是两个世界的人。而且大师课里面还不仅仅是对 web 的 源码的分析和手写,还有更多的前端核心知识,像什么浏览器的进程、现场模型、异步模型、事件循环、渲染管线以及优化的相关问题,都在大师课里边 是最最核心、最最重要的内容。这些内容你们之前我怎么跟你说?说的不太客气一点,学了跟没学是一样的,还不如不学。你接触了很多的错误信息,你扯大师课呢,就花几天的时间把这些信息全部给你更正过来,一是保证准确,第二呢是保证深度。深到什么程度?深到你毕业的程度就是你这些知识一旦看过大师课之后,就不用再去碰了,结 束了,没有了,再深的东西就受到学术层面了,那已经跟薪资高低和职业发展没有什么关系了。所以说,你无论是想高薪就业,还是想在职底薪,只要你还在前端,这个行业里边,大师课就一定是你的必修课。 这个课呢,目前可以免费领哈。怎么领?在咱们账号主页,点击头像进入账号主页,点击提示,你就完事了啊,好,说出来啊。因此这里还是没有建立关联的,是吧?怎么才能建立关联?你要读到他某一个属 性对吧?响应式对象的某一个属性一读好,那么这个函数就跟这个数据产生了关联,将来这个数据一变,这个函数重新运行, 意思吧?好,这是数据说清楚了啊,这么几个条件。好,那么接下来是函数。是所有的函数都能去跟数据产生关联吗?其实不是啊,刚才呢,是为了显示数据,我随便写了个函数,实际上这个函数跟这个数据是不会产生关联的,因为数据层面倒是没问题了,但这个函数层面有问题, 那什么样的函数才能跟数据关联呢?它必须要是被监控的函数。什么叫被监控的函数啊?这从原码的角度来说,在 vivo 二里边就是被 watch 所监控的函数,在 vivo 三里边就是被 effect 所监控的函数。道理都是一样的啊,但这两个东西呢,它是内部的一些实现啊,一般来说,我们外部呢,不太会去直接使用这两个东西。那我们怎么知道这个函数有没有被监控呢啊? 呃,我就罗列几个吧,在 vivo 三里边常见的像什么 render, 对 吧?最重要的 render 函数。这个 render 是 啥?就是模板的编辑,结果这个模板最终会就变成了一个 render 函数, render 就是 一个典型的被监控的函数,因此呢,在 render 的 运行期间,读到的数据都会跟 render 关联起来,将 来这些数据一变, render 要重新运行。 render 一 重新运行,界面数据就刷新了,对吧?所以说数据一变,界面刷新,那只是其中一种响应式的情况。那除了 render 之外,是不是还有很多函数?还有什么 watch effect 啊?它的回调它也会被监控,还有什么?还有 watch 的 第一个参数啊, 他也会被监控,还有什么 computer, 对 吧? computer 的 回调也会被监控,这些函数都会被监控起来,其他的普通函数是不会被监控的啊。好,那么咱们带着这样的理解,再回过头来看这个问题就好,解释了 就能分析了,就不至于完全下不了手了,不至于在那里拆来拆去,看下我们怎么来分析啊。现在小易系统出了问题了,对吧?我们就分析什么,分析哪个函数跟哪些数据关联起来,那不就完了吗? 我们首先有一个模板,模板?是啊, rand 函数嘛。 rand 函数跟哪个数据关联呢?是不是跟那 count? 函数来自于哪?是不是来自于属性?属性是个小意思,数据对吧?属性里边的一个属性是不是函数被监控的函数跟一个数据产生了关联,还跟什么数据有关联呢?是不还跟那个 ref? ref 是 个小意思,数据吧,对吧?它读到了呀,因此呢,跟那个什么 double, counts, value 是 不跟这个数据关联起来了,对吧? 有的人说,啊,那这里没有写点 by 六啊,你别吓我了,哥们,这是语法堂啊,这翻译出来是点 by 六啊,读到了某一个响应数据的某一个属性啊,好了,完没就完了呀,你看整个代码里边就不存在其他的函数跟哪些数据关联了,没有了。那有的人说这里不对啊,那这个数据跟这个数据也没关系啊,你不要去想当然。 这里哪有函数啊,你告诉我,不存在什么数据和数据的关联,没有这个东西哈,只有数据和函数的关联,这是一个函数的关联,这是一个函数在运行期间用到这个数据啊, 不存在的啊。所以说 double 呢,它虽然是响应式数据,但它并没有跟这个所谓的数据关联啊,不存在数据和数据关联的情况。其实这里呢,通过表达式的知识呢,也可以看得出来,这个玩意一开始的值是多少,是零,对吧?零乘以等于多少等于零啊,它相当于是这样写的, so double 的 靠着的值呢,是不变的啊,将来这个变化跟它有关系吗?没关系, 所以说目前就这种情况。因此呢,将来它的值增加了过后,是不是 run 重新运行,要渲染界面?你看点按钮,是不是它的值增加一了? run 是 不是重新渲染界面了?因此呢,你可能看到最新的数据啊,十二再点十三,但是跟它有关系吗?没关系,它的值一直就是零,它值就没变化 啊,这是第一个。好,咱们再看第二个。那如果说把代码改成这个样子呢?那你看就不一样了,前面都是一样啊, run 跟这两个数据关联没问题。那是后边,由于我们这里使用了 watch effect 的 回调,是不是被监控的函数好,被监控的函数呢?我们在这里写一下啊, watch effect, 这就在教同学们以后遇到相似问题的时候,该如何去分析,就去找关联。他的回调里面用到了什么样的相似数据?是不是用到了他,对不对?因此呢?用到了啥?用到了这个 关联了,对不对?那就跟他有关联吗?没关系啊,我们指的是独到的数据,他是独吗?他不是,他是血,对吧?好,跟他有关联。好,那么将来他一变化了,人的函数要不要重新运行?要啊,有关联啊,那他要不要重新运行?是不是也要啊?他变化了,他也要重新运行, 而它一重新运行,是不是 double count 的 value 就 得到最新的值了?因此呢,在页面上我就可以看到最新的值。所以说我们看一下啊,这样的情况下呢,点 increase, 你 看 watch face 重新运行了 double 呢,就能够得到最新的值了。点击点击,点击,点击, 看到没?好,然后再看第三个啊,其实这一块呢,你要彻底的把它搞清楚了啊,好好来看大师课,看完你啥都清楚了,因为短视频确实时间有限。好,现在呢,我们写了一个封装的一个 hook, 就是 有 double 传入一个 count, 然后写了一大堆,返回一个 double, ctrl 乘以二嘛,你别管它中间写了啥玩意儿,你就找关联就完事了。 renter 并没有变化,那么 word effect 呢?它的回调,我们看一下回调中啊,用到了什么样的相似数据?你找啊,你找一找 word effect 里边用到了什么样的相似数据, 比如说用到这个 counter 来,再把这句话读一遍,函数中读到的数据,这第一个条件,数据本身是响应式对象的某个属性,你有毒吗?没有毒啊,你这里是个原始值啊。这个 counter 是 响应式数据吗?并不是啊, 你必须要去读某一个响应式数据的某一个属性,一读,它才会能够实现数据结池,才能够进行依赖收集,没有这个操作的话,它收集不到的。所以说, watchface 这个回调有没有被监控?有监控,但它跟响应式数据有关系吗?没关系,他们里边没有用到任何的响应式数据, 看到没?所以说呢,你会发现在这种情况下呢,这个 ctrl 加一,这个 watchface 的 回调并不会重新运行,看到没?这个 watchface 有 没有再重新运行?一开始运行了一次,后续就没有运行了一次,他发现没有跟任何数据关联,那么将来的数据变化跟它没关系, 那既然他跟他没关系,那他的纸是不是就不会重新复制,对吧?好,这第三个问题啊,所以说这个问题该怎么解决呢?这解决的方式很简单啊,你就不能说传一个 props count 进去了,你要把整个 props 传进去,然后呢,在这边使用什么? props 的 account 上面也是一样啊,这样子呢,还能保证这个函数呢,在运行期间跟某一个相似数据的某一个属性它能关联上,不然的话就没关联上啊。好,接下来看第四个问题,这里呢使用了一个 computer, 我 刚才说 computer 毁掉是不是也能被监控,对吧? computer 呢,这一块比较特殊啊,它的监控方式呢?有点 特殊啊,但是呢时间有限,我这里没法展开了啊。你就先这么想啊,你先把它当成一样的吧,对这道题来说没影响啊。然后这个回调函数里边是不是用到了数据,但他是相似数据吗?并不是,他是一个原始值,他并没有说读某一个相似数据的某一个属性,他直接使用了个原始值啊,因此这一块有监控吗?他就没有跟任何的数据关联上是吧。所以说呢,在这种情况下, 当函数值变化过后,跟这个函数有关系吗?就没关系,没关系,那么这个东西就不会变,他不会变的话他也是在页面上看不到他的改变结果啊,看一下也看不到结果的正确的写法应该是啥?在这里去读某一个详细数据的某一个属性。那这样子呢,才能关联上是吧?你看这样子才能关联上。 好,然后再来啊。第五个好,第五个呢,就是很容易常见的一个疑问啊,我先看一下这个题哈。呃,就是我这里还是封装了一个 hook, 然后这里传入了一个什么 函数,传入一个字母串 count, 那 么在 computer 里面呢?去读这个对象的这个属性。首先我问大家一个问题啊,那么这样的一来,这个函数跟这个数据有没有发生关联,有没有肯定关联了呀?刚才说了呀,被监控的函数,只要在运行期间读到了某一个响应式对象的某一个属性,它就一定关联上了。 那现在关联没就关联了。那这样写呢,就是没问题的啊,看这没问题的,为什么第五个要拿出来说呢?因为这第五个呢,这种传递方式很多朋友有疑问的啊,看这没问题的,为什么第五个呢?这种传递方式很多朋友就不完了吗? 为啥你要传递一个字母串进去?为啥?因为你这样传递的话就要丢失响应式的,你看这边要接受 ctrl, 对 吧?那这边就相当于是用 ctrl 来乘以二,你看这响应式是不是丢失了?这个函数的运行期间没有读到任何响应式对象的某一个属性,是不是它就没跟任何数据关联上,这样子的话会出问题的啊,你看 是会出问题的。这就是为什么像一些第三方库,特别是像那个 u u s 的 第三方库,经常要让你这样做,先传个属性,然后呢再传一个字母错的属性名,他为什么要让你这样做?他没办法,因为他必须要在某一个函数里边去读某一个对象的某一个属性,只有有这几行代码才能把它关联上。 现在清楚了吧,更多的关于享意识的知识,特别是如何把享意识学毕业,学到以后再也不用去碰这个玩意了。这个玩意也挺烦的,把它设好好看一遍就完事了,啥问题都解决了。

new resume 在 body 里写,当然不是直接在 body 里写,对吧?直接在这里写 g s 代码,不会要写一个什么 script 标签, s c r i p t 然后回车 s c r i p t 回车 g s 的 代码要写在 script 这个双标签的闭合里。那你不能写直接写在包堆里,你一定要写在包堆下的 script 这个标签里面。所以说要有两层啊,要有两层, 那看一下 g s 的 代。这这个代码注是怎么写啊?按住 ctrl 反斜线啊, ctrl 反斜线,哎,怎么没有? 哎,我的 ctrl 反斜线啊。有了啊, ctrl 反斜线出来两个反斜线,那么我们就知道了,注视 g s 的 注视 就是两个。什么反斜线,能理解吧? g s 的 注视就是两个反斜线。那我们写上笔记啊。写上笔记写什么?我们 g s 的 代码要写在 body 下面的 scrt script 标签里面啊,你不能写到别的地方。 这是说了一个注是和一个写代码的一个位置下来呢。学习一下它的语法啊,它的语法。

我们在阅读一些第三方库原码的时候啊,经常会看到一些稀奇古怪的数字书写方式,你看一下这些乱七八糟的数字书写,其实他们都是合法的哈,都是正确的。这里报了个错,不用管他,他是正确的,咱们打听看一下啊,全是正确的,好,我一个个说啊,避免你们在阅读一些其他人原码的时候看不懂,同时呢,对你自己书写代码的时候呢,某些数字的一些书写方式也会给你带来一些启发。 首先我们就是一个正常的数字,这个没什么好说的啊,然后呢,如果说你的小数部分是零的情况下,你可以把零省略,但是呢,你可以把小数点保留,你看这三点后边零省略,小数点保留 好,你看这是没问题的啊,得到结果呢,就是一个三啊,没问题。好,如果说你的整数部分是零的话,那么你可以把整数部分省略,从小数点开始写点幺四,那么得到结果呢,就是零点幺四啊,很简单,如果说你的数字比较长,你希望每几位进行分割,你可以用一个下划线来进行分割啊,你看这样的写法呢,得到结果呢,就是这个数字, 你也可以使用一些科学计数法,比方说你这里可以写上一点二三乘以十的十次方,你看这就是个科学计数法,那么得到结果呢,就是这个,对吧?在有的时候呢,特别是一些财务系统里边,你这样书写的话,是不是更合适? 然后下面这几个呢,就是跟进字相关的了啊,比方说,如果说你的数字直接以零开头的话,他是一个八进字的数字,比方说我们看一下啊,零七是啥呢?就是七八进一,那就是八,对吧?所以零七和零分别是七和八,好看一下啊,是不是七和八? 但是如果说你用零开头这种八进字来写的话,你要注意一下啊,他里边是有坑的,坑在哪呢?就是他不是一个严格的八进字,什么意思?就是你后边跟着那个数字,他会尝试把它转换成一个八进字, 能转换成八进字,那就 ok, 那 如果说转换不了呢?比方说像这个零八八进字里面有没有八?肯定没有八呀,逢八进一了呀,所以他就不是一个有效的八进字,如果说发现转换不了八进字,他就会把他当成一个实进字,你看零八零九就变成啥八和九。所以说这里呢是很奇怪的啊,零九,他的结果呢?他的结果呢?是八哈,就很奇怪。 因此呢,现在呢,已经不建议使用这种方式来书写八字字了,这是一种很古老的方式了啊。嗯,因为一些历史遗留问题,所以现在呢也没法改,他也不会给你去掉这种写法。但是呢,朋友们以后开发的时候注意一下啊,如果说你的项目里边遇到了需要书写八字,建议你不要用这种方式啊, 开发里边去注意这些小细节啊,会为你将来省不少的心。其实解决问题的最好办法是啥呢?就是你在开发的时候呢,尽量的去避免问题,就不要让问题发生,而要有预判问题的能力就好。好来看我的大师课,大师课是完全免费的哈,来领取。完事了,这课程呢,他没有价格,因为免费嘛,但是呢,我可以保证啊,他的价值超过你以往看过的任何课程 点不夸张啊,你学了就知道了,这课程的威力到底是多强,无论是里边讲任何内容,像什么 v 八的原理啊,框架的原理,原版优化呀,浏览器渲染管件啊等等等等这些核心知识啊,我讲解的深度,任何一个拿出来都能够让你你真正的高兴,进一大步 学完这些内容啊,其实都不用我说,你自己都能感觉到,又能打了又行了,薪资又可以上一个台阶了。如果说你天天看袁老师的短视频都觉得有帮助的话,那么大师课对你的帮助可以说是我所有的短视频加起来总和你开玩笑,那是体系知识啊, 这种零散的短视频能比的啊。所以呢,还没领到的同学啊,目前的课呢,还可以免费领取。怎么领?在咱们账号主页,点击头像进入账号主页,点击提示领取。完事了啊。好,咱们接着往后说啊。那么现在呢,不建议使用这种方式来写八字字了,那真正的八字字该怎么写呢?应该这样写啊,使用零 o 开头,这样就没问题, 那么他就会使用严格的八进字转换,你看零七是啥就是七,零幺零是啥就是八,对吧?那如果说你后面跟了一个非法的八进字的话,那他是要报错的啊,比如说零九,你看他是要报错的,这是真正的错误啊,需要八进字的数字运行,你看他说这不是一个有效的八进字对吧?无效的头肯那么 这里呢?写回去啊。那如果说你写十六进字的话,像什么颜色啊?对不对?还有一些像什么 md 五啊,对吧?这些都是属于十六进字的字编码的话,那么你可以使用零 x 开头, 那么后边就写十六进字啊,你看这个 f f f 得到结果是啥呢?就是四零九五是吧?十六的三次方减一是吧?好,然后下边是二进字,零 b 开头写二进字,你看一些第三方库,像什么 react 啊, v u 里边是吧?都有这种二进字的书写方式。 然后最后呢说一下这个数字的函数调用,然后你直接书写个数字,就是数字字面量吗?对吧?如果说你需要直接去调用一个数字字面量的函数的话,你一定要注意啊,要写两个点,你不能写一个点,为啥呢?一个点他报错啊,他有歧义的。为啥有歧义呢?因为这个袁慧觉得啊,你写一二三点,你后边是想写啥呢?是想写一个小数, 但是那个小数怎么能是个 to 呢?是啊,所以他就有误解,因此呢,你要写两个点,因为我们刚才知道啊, 这是一个数字,对吧?一二三点后边是省略零的一个数字,这个数字是一个完整的数字,那么后边再跟点的话,那就是个方法,调用了,他就不会产生误解啊。调写两个点好,其他的没啥了啊,普及一下这些数字字面样的书写方式。

我不知道他狂欢是啥,他兴奋个啥?我不知道,我到现在没明白啊。能聊聊 yippo 口令吗?哥们,说实话我都想有人跟我聊 yippo 口令。就是 yippo 口令,从去年下半年吧突然这个词冒出来,冒到现在,我到现在我都没明白你们说的 yippo 口令到底是个啥。 他不就是跟人家聊天吗?就是打字说话,语音识别,用微信语音识别,识别出来了过后把这种插入发送给 ai, 然后 ai 让你让你携带吗?不就这个东西吗?还有啥呀?啊,真的,这一块我真的想有人教我一下这个。还有啥呀?还有啥技巧 啊?有啥技巧?斜杠,一个 skill 斜杠,请使用这个 skill frontend 点赞,请用这个 skill 帮我去设计个界面,梳理 skill。 咋梳理?你要咋梳理 skill 啊。你就是安装 skill 嘛。好,帮我安装一个 skill, 我 要做什么什么用?你帮我查一查有没有这个 skill, 有 的话帮我安装一下,给他发送这句话,让 a 帮你安装。你说的是这个意思吧,自己写 skill 就 写个马克当文件啊。 a 证书里边建立一个 skills 文目录,然后你这个 skill my skill, 然后写上一个 skill, 点 md 文件,然后前面写你这个技能的名称, delete 文件,然后写 什么情况下使用这个技能,你告诉他就行了,然后下面就是技能的内容,就写文档,甚至很多时候你都不用自己亲自写。你告诉 ai 你 要创建一个什么样的 skill, ai 都可以帮你创建。不是我理解的,还是不说。还有什么东西我不知道的,但是我觉得没有了呀, 还有什么东西我不知道了,我天天关注 ai 的, 应该没有啥东西我不知道了吧,就是外部口令到底是个啥呀?啊,就跟前以前前端的那一块也经常在说什么 h 五,我实话说同学们,我到现在我都没理解什么叫 h 五, 有没有谁在告诉我什么叫 h 五啊?当时我讲课的时候, h 五把这个词把我打蒙了,一个同学问我 h 五是啥?好多年前讲课的时候我不敢乱说,我差来到处查资料,因为我也确实听说过这个词,但是我别去查到处查资料,我查不到 h 五这个东西,我不知道哪来的这个词,后来他慢慢知道,根本就不是一个技术名词,没有一个官方解释, 就自己以尔传尔传出来的。我到现在都没明白那个 web 口令到底是个啥呀。哈尼斯,言情里尔言啊,优秀。对对对,现在出来这个名词了,叫哈尼斯。哎呦,我的天呐,真的是能造词啊,这不是一直在干这个事吗? 就这个?他说的意思不就是如何使用 a 政策吗?就是如何使用大模型吧,对吧?如何驾驭大模型吧,现在把使用两个字变成驾驭了吗?哎,请问大哥大姐们, 驾驭,请问没有这个词的时候我们在干什么?哎,没有出现这个词的时候,我们当时是咋用大模型的?那些 a 敬者, close code 也好, code x 也好,那些 a 敬者他是咋在用大模型?他不还是套用法吗? 现在就是给这个用法取了个名字,叫做哈纳斯 and 尼尔韦。哇,一下子爆了。我不知道这狂欢是啥,他兴奋个啥。我不知道,我到现在没明白啊, 不是国人喜欢用名词,就是全世界都疯了一样不知道在干什么。就是一直在驾驭魔性吗?我一直都在干这个事啊,从大幕前出来的第一天做音乐我都在干这个事啊。一开始是方克星颗粒嘛,对吧?后边变成 toos, 然后后来又是出现了个 mcp, 对 吧?有 skill, 现在又有什么颗粒对不对?还有现在又去玩了很多花样,什么人在回路啊之类的啊,异常中断呀,恢复啊之类的 啊, comfort 类型啊之类的,现在很多 ai 的 模型提供商都可以允许上传文件了,不就一直在大驾驭大模型吗?他为什么会突然间冒出这个词来呢?我那一天我是真的翻了两天,我把全网关于哈密斯的解释一个视频一个看完了,看完我更懵了,我不知道他在干什么,在说啥。 说来说去不就在写这个模型吗?我说模型吗?袁老师自嗨中,这谁来教教我呀?我没太明白呀。啊?我,我看不懂了,哈哈哈,我说我这真的是不知道在干什么。 呃,我说的,但是老板还有市场很狂热是吧,那也就是说我们现在就是无非就是要就是有一个什么样的说辞,对吧?我们接受这一点,接受他新造的这些词,我们也不管他啥意思,反正我们说的高端就行了,是不是,是不是这意思啊?那,那这个想法是正确的啊,能忽悠面试官就行了啊。 那这个想法是没问题的,比方说那咱们那个架构课里边 a 进城应用开发,开发完了过后就是我会什么了?会的,不是 a a 进城应用开发那个落后了,我现在会的是 harness engineering, 说这样说起来就高级了是不是。是这个意思。那可以,因为实际上是一个东西啊,没有区别啊。 harness engineering 是 哪出来的? 是他们玩这个廊签玩出来的呀,廊签里边已经提供了一套系统方案了,然后其余这套方案,然后再去玩一下花样出来不一直是这样玩吗?以前也是这样玩啊。没区别啊,我看那个就是一社区里边那个哈尼斯玩法。不就是以前的玩法不一样吗?还之前跟现在自己搞了一个什么东西找什么 flow 啊。我看一下什么 flow 不是 叫什么什么 flow 了,自己搞了个玩意。那不就是那个呃,廊签的一个商城框架叫 d p n 检测吗? 那低配进去是早就出来了呀。出来好几个月了,那个时候也没有什么。哈尼是 nike 的, 为什么最近又火了一把,我都没搞清楚他们在干什么,一直在那里狂欢, 这不知道在狂欢啥。然后你这一块你就可以写什么?写外口令对吧。啊,你就不要写,我会跟 ai 对 话,然后完成那个项目了就写外口令,这是显的高级是吧,尽管是一个意思是不是道理啊,你写简历啊,就面试的时候你就说高级点啊,反正他们也搞不清楚是啥意思,你就吹呗。 但是实际上他没有什么新的玩意出来啊,是吧。哦,对,迪奥福的,我一看那不就是 d p a 建成吗?他跟那个蓝天里面的那个 d p a 建成不一样吗?不,没有,都没有区别知道吧, 他就是用这个玩意给你打了 ui 界面出来就没了。哎呀,我真的是真牛逼,太会玩了,发明一个名词就在狂欢。

new moon raisin 我 们看一下什么固定格式。首字母必须是字母,首字母必须是字母,然后呢?后面和中间你可以用数字 或者下划线或者美元符号,然后不能用的。有哪些不能用的?像有这个艾特符号啊,艾特符号你不能开头,开头必须是字母, 对不对?后面你可以用数字和特殊的字母,比如说下划线和美元符号,那么我们是一个数字开头的。假如说我有一个变量叫 e a, 你 看看到没有,他这个 e 颜色都不一样,颜色都不一样,你鼠标停在这里, 他就会说语法错误的。所以说啊,变量名称一定不能拿数字来开头,你可以用 a 一, 但是不能用 e a 啊。首字母必须是什么? 首字母必须是字母,首字母, 哎,受字符号,哎,这个输入法好难受。 首字母必须是字母开头,然后呢?后面可以用数字,哎和字母,还有还有下划线, 还有美元符号,当然的话,我也不建议大家使用美元符号和下划线啊,下划线可以用,一般这个我用的也比较多,当然我很少用美元符号的,大家的话也尽量不要用啊。我们就是首字母 开头,然后呢?后面用数字和下划线,或者随便拼接怎么搭配都可以啊,怎么搭配都可以。 然后啊,我们来继续刚刚说过变量以及变量命名的规则啊,规则大家一定要记好,当然的话你不记也可以,你就全用字母嘛,对吧,全用字母的话,你也不用记这个规则, 然后呢?还有是干什么?我们说了一种关键字是叫谓啊,我们再说第二种关键字是叫 const, const 关键字, 那关键字怎么用啊?用法当然都是一样的,在声明变量之前,我声明一个关键字,然后这里写我变量的名称,假如说我这里变量的名称叫做 b 啊,等于一个 啊,我们这里写一个字母算叫做 const 关键字声明的。来,我们输出一下 c, o, s, o, l, e, 对 不对?点 log, 然后一个 b 来看一下输出的内容是什么。他说 const 关键字声明的,那这个东西有什么不一样嘞?对吧? 有什么不一样?从这个我们输出的内容上面看, const 关键字声明的与你 word 关键字声明的没有任何的区别。那我来告诉大家有什么区别? const 关键字 const 是 常量,什么是常量?就是不可修改。 什么叫不可修改?首先说怎么修改?直接修改啊,直接修改,你看啊,我说 b 啊,我先改 user name, 我 说 user name 等于等于什么? 等于是赋值。所以说你重新复制一下,不就是什么修改了吗? 这里我们把织蕾这个字母串复制给了左边的 user, 那 么我们这里重新复制一下,他不就修改了吗?也就是一个覆盖修改的一个概念。那我们修改成什么?潘哥, 对,我再输出一下 user name, c, o, s, o 来 e 点 log user name, 我 看一下 user name 是 什么,他说潘哥,对吧?变成了潘哥。那这里为什么还是叫朱磊嘞?这里为什么还是叫朱磊? 这里为什么还是叫织蕾?我们来看一下代码,我们从上往下读一下这个代码,浏览器他在读这个代码的时候也是从上往下,所以我们从上往下第一行 ctrl alt 输出,学习 gs 第一行代码,好,没问题, 这里我们定义了一个变量,叫做一个叫织蕾的字母串,那么我们输出了一个我的名字,叫做一个内幕, 那么我们就光看这两行,此时啊,此时此刻,浏览器运行到第二十七行,浏览器运行到第二十七行, user name 是 什么? user name 还是字雷啊? 在二十七行之前,一直到二十七行,他一直是智磊,所以浏览器运行到二十七行,输出一段内幕的时候还是智磊,以及运行到二十九行的时候还是叫智磊,直到他运行到三十五行的时候, 他才变为了潘哥。那么在三十六行的时候,输出了一段内幕,变成了潘哥。 所以说啊,大家读代码要从上往下读,要有逻辑性,要有记忆的,相当于是啊,要有记忆的,你不能说这里改为了盘哥,这里就不管了,这里是就是盘哥了,从改盘哥之前他一直叫志磊,改完变成了盘哥以后,后面的 他才真真正正的变成了潘哥。那这个就顺带的给解读解答了我们刚刚这位同学的一个问题, gs 代码是不是一行一行运行的?当然是, 不光是 gs, 你 后面所学的所有语言都是解一行一行运行的,不可能说两行两行,而且是从后往上读的,不可能都是从上往下一行一行往下读,对吧? 这个缓存是关闭,浏览器有,这个我们不用管啊,不用管他到底缓存在哪里? 不用管,而且你浏览器的关闭了,你关心他这个缓存存在哪里,呃,也没有意义,对吧?也没有意义,浏览器都打不开了,都不打开了,他存在哪里又能干什么呢?对吧?总归他只能运行在浏览器里 这种。我们知道这个就好了我们知道这个就好了。下来该学习什么了?我看一下该学习数据类型了。数据类型?什么是数据类型?或者说什么叫数据?什么叫数据? 什么叫数据?那就这几行代码。哪些东西叫数据啊?我看大家有没有人知道的,大家也预习过吧。哪些是数据啊? 这个 b 是 数据吗?那我这个变量名称 b 是 数据吗?大家来回答我,它是不是数据? 我这个变量名称 b 是 不是数据? 哎,大家都说都是数据啊,这样也对啊,我算大家对,为什么说我算大家对呢?啊?并不是说磊哥苛刻 并不是说磊哥苛刻大家,而是大家还是少两个字。哪两个字呢?变量里面的值叫数据,什么意思嘞?变量是变量名称,你要说变量里面的值, 对吧?你要说变量里面的值,变量它只是一个地址,它只是用来找到里面的数据的,你要说它里面的值才能叫数据, 什么意思嘞?这个 user name 它只是一个变量名称,或者说一个数据的指向地址。那么至于说它的数据是在哪里?是在它的值里面, 那什么叫数据?数据就是变量里面的值, 这个才叫数据。不能说变量啊,变量这个不能叫数据。那说一下数据类型,数据类型呢?就是变量里面值的类型嘛,对吧?值的类型, 首先说它有几种类型,我们看一下。磊哥也记不太清啊,磊哥要看一下。

d n i s 缓存在我的路由器那里,你咋清啊?在我的本地电脑上,你咋清啊?嗯,他把我路由器给我清了,我就有个技术问题啊。啊,就是我不是。呃,我们前端会有这个 app 请求的,一个就是 d n s preface 和这个 connect 就是 相当于连接嘛。 连接,然后其实也很简单,就是,呃,宁可然后加一段代码。嗯嗯嗯,然后加完代码之后我在 l o k 那 个他命当中去看他的这个请求耗时, 但是我发现加完之后它这个请求耗时就是 d n s。 解析也好,还是说什么握手也好,它这个时间仍然是有的?不是,这个是 pre connect。 哦哦哦, pre connect 是 吧? 对,然后就看 networks, 它面上面仍然是有耗时的,然后都超过一百毫秒的。我不知道这为什么。你说的是 d n s 预检测吧。嗯,就说这个 pre connect 吧,因为这里面还包含着 d n s pre connect。 啊。对, d n s pre connect 是 干啥的?我看一下, 我再搜一下。嗯,好,等下我看一下。那个你可原始的荣耀手机,本来那个是刘爱的一个,也是跟用户需要的,需要来,我把你打资源。是那底下就有。对 d s 加 t c p 加 t l s 就 这个,你看有可能通过抢先启动就该这样连接。很可能。呃,我看看啊 like, 也就是说这里面有情况的,通过抢先执行部分或全部握手 app 为 d s 加 t 与连接可能会加快未来同给力资源的加载速度,而 connect 中将为未来的跨源 app 请求导航会指资源大的好处。 嗯,他对同源的请求没有好处,因为连接已经打开。嗯,说的有道理,因为你请求同源的页面对面就已经建立好连接了,他必须是跨源的,跨源的才有意义。 如果一个页面需要与多个许多第三方域建立连接,他们全部域连接可能会反而适得其反。 link real quick connect 提示最好只用于关键的连接,对于其他的连接只需要使用 link dns prefetch 以及是第一步 dns 的 查询时间。这里边它有情况的耶,它并不是说一定要给你建立连接的, 但是它没有详细说。对,我也问了 ar, 然后也问了,就查了一些资料,查不出所有人来。有的时候可能是因为跨源的话要加这个 cross orange, 那 我加了一个,因为用不是这个问题, 文档里面都没有那样说,也就他这里边浏览器他有策略的,他不是说一定会给你把链接建立好的,他里边有策略,那具体是什么策略那就 不太清楚了呀。首先官方文档你要确定他是不会骗人的,如果他不是实验性质的话,他不会骗人的。就是如果说你要对那些关键的第三方就是跨源的请求,你希望以后有请求的时候尽量加快一点的话,那么这件事呢,你是可以写到前面的,但是至于说他处不处理, 那不好说,就有点像啥呢?就像一个 cs 里边一个属性叫我要劝解,对吧?那么你使用那个属性过后呢?并不是说他一定会给你建立一个分层,有可能他建立,有可能不建立,他里边会内部有策略, 那么这个策略的话应该不在标准里边,应该是基于浏览器的自行实现,基于策略的,就说这个东西你不用去纠结,不用去纠结,他到底什么时候给你建立,什么时候就有点像啥呢?有点像那个谁,他 boss 理论他啥时候执行的问题你不用去管,反正他只告诉你他是个红人物,尽快实现完事了。 嗯,那如果抛开这个不谈的话,就是老师您刚才提到可能比较了解这个 dns prefetch。 啊,那我其实加了 dns prefetch, 我 发现他这个 dns 的 这个他也没有进行根据解析。还是有是吧,正几年前的时候还是会存在的。对对对,那我又来查一下 dns prefetch。 呃,他的解决的内容是 before resource, 在 资源的借钱要请求这库里比尔放楼顶的地尔林肯,他会这,因为太舒服了。这里他也说的是可能性啊, 当给浏览器请求一个资源,从一个第三方的服务器,然后呢?跨越一个域名可能要被解析成 ip 地址,等浏览器去处理这个请求的时候,这个流程是 dns 解析的, dns 缓存。哎,他这个没有说可能性哦,他是要解析的哟。 哎呀,三种主要的情况要记住,一个是有,中文没有吧,我看英文老火的。这叫世界 dns, 请跨越 dns 查找一下。 知道啊。哦,还可以通过服务器哈。嗯,这个应该不会,应该不会出现那种情况,如果说你出现那种情况的话,你有没有这个势力代码,我可以复现的。呃,势力代码?我,我这边现在没有。我因为我拿手机的啊, 但是我要去找一个我没访问过的域名,我脑袋里面域名还要可用,你给我想一个域名呗。我就是我没访问过的这个域名还得可用。呃,可以啊,就写一个这个,我在对线的问题。 对,然后链接一个,然后呃,链接一个啥?呃。 flame go? 点 help。 什么玩意儿?一个拼一下,你能打在评论区不?呃,好,我我看一下, 但是官方文章都说了它不会骗你的。打上去了,然后 flame go。 对, flame。 呃,点 help, 点 help 是 吧?嗯,对,可以了。嗯, app flame。 明哥。哎,老师,你可以把这个网址用浏览器打开,看能不能访问到一个,我打开了 d s 就 进缓存。啊啊,是,然后我咋弄,我该写个啥代码?把你问题复现 咋复现?对啊,我咋复现?比如说我这定时器开一秒钟过后,然后呢?我去访问这个上面一个东西,比如说我就访问他首页吧,废弃吧。对对对,可以三秒过后我访问那个这个站点。对对对,这样行吧。嗯,可以打开网络, 然后你看到了啥,你从哪个地方看的?嗯,有个他命,对,是吧,哎。对对对,就是你啊。对,这说了啥呀?开始连接已停止,初期连接, 哎,这个时间是很短的。这个已停止是通过时间长短来看的吗?啊对,然后我问了,哎呀,他就是通过这个连接的,这个时长他正常的话如果可能就是几毫秒啊。这种是一秒不能通过这个来看啊。这个是包含了握手的呀, hps 协议的话,那个他还会做这个就是 tls 的。 握手 啊。对,因为这个是中文的文字,要是英文他会上面会显示,比如说有 dns。 不 靠谱呀我,那我就调成英文吧。嗯嗯,我不是,我咋调成英文呢?之前是一个同学教我调成中文的,我现在调不回去了,我咋调成英文呢?设置呢? 设置这里。对不是,我当时不是在这里调的语言,不是他控制台,他咋调成英文的?控制台里边设置这个。哦,在这 一问搁哪呢?赢个利息赢个利息搁这呢。哦吼,我还在重启浏览器哦,完了,我重新加载丢错了,它就没了。 呃,无痕模式呢?啊?无痕模式?不是啊, dns 缓存它不在这个浏览器里边,它在我的路由器。其实是另外一个问题,就是我看 ar 上面,他是说因为老师我看您这上面已经勾选了第四 apple 的 cash, 然后 ar 工具上面说只要勾选了 dc apple case 就 会把这 dns 缓存给清掉,但是实际上我发现它其实清不掉。 dns 缓存在我的路由器那里咋清啊?在我的本地电脑上,你咋清啊? 嗯,他把我路由器给我清了。对,我其实我也说,因为比如说我们的电脑路由器我可能不知道,但是知道我,我知道我们除了浏览器啊电脑这些其实是有缓存的,所以那等于说 ar 其实讲的也不对,因为他是说把这个 dc apple case 把它勾选之后,这个 dns 缓存就不会不会有几级缓存,一个是浏览器,一个是操作系统,然后一个是路由器,路由器外面都还有,还有一级二级三级一大堆缓存。那就还行啊,你只要访问过了他就摘了,知道吧。 嗯嗯嗯,你再给我想个域名,三 w 点,百度点 com。 那 肯定不行啊,你不用去纠结那个玩意,你就写的肯定比不写好,你管他的时间来看的话,你是看不出来 dns 有 没有解析的,你要看啥呢? 嗯嗯,你咋看才能确认呢?我想想啊。对,就是我想想你咋确认。你要去整一个抓包工具, 呃。然后你去访问一个新的域名,其实不用访问新的域名,你去整一个抓包工具。我的电脑上没有有整个抓包工具。抓包工具你去看一下表,这里的代码先不要运行表。这个代码是点按钮过后才运行的啊,你都不用运行这个代码,你这个代码都不要, 你就看那个抓包工具里边有没有往这个地方发东西就行了。往这个地址发数据包,你就看这个就可以了,如果发了就 或者是看一下你电脑上配置的 dns, 目标 ip 就是 你 dns 解析是在哪个目标地址上,你看一下他有没有往那个目标地址发东西就完事了。发这个信息的东西就完事了。你就看这个,这是最明显的直观的看到他发了,他肯定是解析的。 他发了就肯定解析啊。嗯,我底下先不成交了呀。嗯,就我底下先不访问这个资源,我只是宁可加上这个东西。嗯,然后我看他会不会发这个。哦,明白意思。嗯,这么一说吧,你后边的请求他不是说他就不发 d s 解析请求了,照样要发的,只是呢,由于他又缓存,他很快而已。 嗯嗯嗯,老师,我看很多的网站其实都会加这个,比如 dns 这些啊,或者 kindle 这个。对啊对,但是我就看他这个,他命都是有这个时间的,也不知道是为什么。他肯定有时间,他的走缓存也要时间嘛,而且他握手还有握手啊,握手也需要时间。 嗯,行行行。嗯,行,谢谢老师。不用管他,这个监督下是挺好的,加上就完事了。嗯,行行行,谢谢老师。嗯嗯,好客气啊。嗯,拜拜啊。

而且我觉得互联网发展到现在,我不认为它充分的满足了每一个人的需求。嗯,最近嘛,就是在公司里面,就是我们公司一直在推这个 ai 嘛,然后现在在用 ai 写代码,嗯,就是整个公司这个 ai 的 技术氛围比较好,也特别浓吧,就是导致现在基本上 呃,我写代码就是基本上,呃 q 叉和 cloud cloud。 你 们用的是官方模型吗? 啊,不是,是那个质谱的。哎,我就问一下,我纳闷了,你们用官方模型是咋用的呀?你们公司里边就是给你买了个什么卡扣的的官方模型,你们是咋买的呀?他好像像是 中间架了一层,类似中转站,你不怕给你架模型吗?你这么信任他,他所以我一直没有用卡。你们买中转站的人你们一点都不担心他用的是别的模型吗? 你们凭啥能不确定他用的是卡的模型的?我觉得百分之九十九他都给你换模型的, 真的一点不给你吹牛逼。你要知道那个克拉的封 ip 封的多厉害,机场 ip 是 一定被封的,你只能做家庭 ip, 你 只能做那个北美的家庭 ip。 家庭 ip 很 贵的,我觉得那个卖家他不给你换模式太快了。注册机你也得去连啊,你也得去连官网啊。 用过了就知道你用过了,你咋知道的啊?你咋知道的?你咋知道的?你要你,你有没有一种可能啊?就是有一种可能性啊,你就是用一个国产模型,你会发现跟他差不多的。有没有这种可能性啊?还有这种可能性就是咱们就好像从来没有用过官方模型是啥样子都不知道官方模型是啥能力。 所以说没有对比没有伤害是吧。只需要一个 us 点真的那么简单吗?啊几场 ip 一定被封的。你开玩笑那哥们恨我们恨成啥样了。 呃什么问题?刚请讲继续讲。就是整个 ai 发展节奏比较快吧,近段时间然后。嗯呃像我们部门还有一些团队基本上快实现这种零代码开发了,比如说一周写五千行代码可能是 大部分是 ai 写人写的可能不超过五十行,那么就是说呃对就现在有一种小小的危机感嘛。就是说对于我们前端开发者你的危机感是么?是这么一个逻辑,就是现在做开发不需要知识的,不需要技术能力的。呃不是,是需要的 啊。对是还是需要的啊,但就是说我感觉这个就是来的可能是太快了还是怎么了。就是我给他描述啊说一些什么东西他就自动帮我完成了。啊啊啊。完成就完成了呗。 那你的危机感是不是就是觉得现在市场上不需要你了不需要你了,不需要你的原因是因为你对技术能力不看重了是不是这个意思 啊?不是说不需要我了,可可能会裁掉一大部分人,比如说之前需要五个人。哦明白了明白了,你是焦虑的是效率提升了过后做同一件事他需要的人就变少了对吧?那有没有一种可能那我问你哈,人类历史从古代我们在丛林社会里边去打猎种果子到现在生产力是在逐渐增加还是在降低啊? 他肯定是在增加。对啊在增加。那生产力既然一直在增加的情况下,那为什么没有失业呢?哎,以前种果子要一群人, 全家人整个部落都要去种果子,都要去打猎,后来发现,哎,生产工具的改进过后,生产力提高了,原来打猎和种果子、种粮食不需要那么多人的,一部分人就抽离出来了,那事业那部分跑哪去了 啊?可能还有其他的一些出路吧。我理解是就是说是这样的,不说那么远哈,那我们只说之前就是近一点的前端发展,前端以前就是 e s 三的时代,就是只有 g s, h m l, c s s, 然后加上接口位就没了,那后来这个框架出现了,工程化出现了,那么前端的生产效率得到了大幅度的提升。 那么大幅度提升过后呢?当时也是这个问题啊,同样做一件事,以前要做很麻烦,一堆人去做,要写大堆借宽的代码,那么会现在用框架过后,还不仅可以附用,而且呢,做出来效果还好,而且使用的效率还高,而且这个需要的人还少,一个人可能就完成了,而且非常轻松就完成了。 但是你会发现效率提高过后,对人的需求没有降低啊,反而增加了。为什么呢?因为你的逻辑它是一个前提条件,就是我们的需求是不变的, 就总的需求量是不变的,当我们需求量不变的情况下,那确实生产效率提高一部分,自然就挤压出去了。但是为什么需求会不变呢?你没看到这两年我说了那么多花样吗?各种 ai 的 工具,还有包括那个智慧城市,还包括那个军工里边的项目,还包括制造业,都在数字化, 那需求是在增加呀,人出来了过后,他整个的需求量也在增加呀。所以说你不要只盯着一个点,就是说你们那个项目组做你们那个需求需要的人确实变少了,但是你要看到在整个市场上各种各样的新的需求出现了。 而且我觉得之前我在直播间还说过,这个互联网发展到现在,我不认为他充分的满足了每一个人的需求。 以前是没办法受制于各种各样的一个成本,包括运维成本、市场研发成本,包括那个就是开发成本,受制于各种各样的成本,我只能满足一个大众的需求,我没办法去精细化的满足每一个细分群体的需求。但是现在 ai 出来了,无论是市场运营也好,那个销售也好, 包括这个开发的也好,他的成本都在降低,那是不是就会出现一个临界点?哎,我好像以前做这个细分群体是亏本的,但是现在好像是可以做了,有没有这种可能性呢?我觉得以后哈,我觉得是一定是个趋势,做细分细分市场,垂类市场, 甚至是基于某一个小区,基于某一个年龄段,基于某一个年龄段的某一种性格的某一种个性别的人群去做一些事,这种细分需求一定会大量爆发,因为这些需求是没有被充分满足的。就比方说举个简单的例子,像我们做教育类的一些应用, 以前做 k 十二,对吧? k 十二我怎么做?慌一堆,我认为所有的从三岁到十八岁的小孩都是一样的,一模一样吗?每个小孩都是情况都不一样, 他们的需求没有被充分满足,包括像我的小孩,为什么我要给他专门去开发一个小应用?因为我发现学习机上的所有东西都满足不了他的问题,都解决不了他的问题, 我要针对他自己的问题,要去单独的去做个应用来解决。以前是没有这个时间去弄的,但现在有 ai 了,我可以轻松把它弄完,我就发现那种精细化的需求一定后边是一个细粉市场,所以说你不用担心这一点,当生产率提高过后,他的新的需求就会出现。 好啊,然后原来时候还有一个问题,就是因为,呃,目前就是得知的话,就是有几个大厂,他们是在裁员,或者说是要求前端去转 全站嘛?嗯,然后我作为一个前端开者来说,如果说你前端毕业了过后就确实可以转全站,您觉得这是未来的一个趋势吗?对,前端。呃,现在我不好说,这个在技术界是有争论的,争论的点就是你如果说要全站,你全站要学到什么程度,就是你的学习成本有多高的问题。 举个例子哈,比方说现在我们先不说全站,我们说现在做前端你要学到什么样的程度,就这个问题就是你的天花板在哪里,你要学到什么样程度?就是即便是现在有 a 的 情况下,你会发现现在前端薪资也是有高有低的。哎,按你说的话 讲道理哈,按照你们这个逻辑不应该是这种情况,因为现在有 ai 编程啊,都知道有 ai 编程,应该没有不知道的吧,所有的老板也知道,所有的开发者也知道,都知道有 ai 编程的情况下,那薪资就该一样啊。因为我对你的要求是一样的呀,没有区别的呀,你都是做前端,你没有发现你这个逻辑很奇怪啊,是不是?为什么我的薪资会有高有低呢?这 就是我现在纠结的点,我想不通这个逻辑。如果说假设啊,按照你们的逻辑是有 ai 了,我就不需要什么样的技术了, 那么对你的要求就应该一样,那个薪资应该一样,就应该是三五千,你们简单学一下就行了,但为什么还是需要你们会这个,会那个,会这一堆,然后才能拿到高薪资,才能解决他们企业里边的问题?即便是有 ai 的 工具的情况下,那如果说这个逻辑套到全站,那问题就来了,那你每个技术学到什么程度呢? 如果说每个技术都要学到你钱在前端那个程度的话,那你的学习成本就太高了,那你应该给你开多少薪资呢?嗯,是不是这个问题?所以说社区在争论,就在争论这个点, 他觉得这个东西,有些人觉得东西不现实,他可能对某一些公司是现实的,比方说以前的一些小企业,比方以前没有 ai 的 时候,是不是也有权赞?有啊? 嗯,当时我们连麦的时候, ai 还没有火起来的时候,他也有权赞啊。那个时候权赞是干嘛的?写个小程序,写个什么?呃,那个公众号,反正是做一个官网后台前端就一起搞了得了,反正也不复杂,那么你我也不需要你会多少技能,对不对?那么那个时候你就搞权占,那么现在有了 ai 以后,那些权占岗位是不是以前 挺好啊?就是我的公司的业务足够简单,以前哈公司的业务足够简单,所以说我招个人,他这样会一点,那样会一起搞完得了。好在以前没有 ai 的 时候,那么是不是会有这么一些公司,他的业务呢? 也很简单,但是又没有那么简单,他全站的可能不太好招人,所以说呢,他就得招一个前端,招一个后端,要招两个人。但是现在 ai 出来了,那么这部分企业他比较偏简单的企业, 他处于这个临界点附近的企业,他就发现,我靠,我不用找两个人了,一个就搞定了,现在有 ai 了,他不会后端,反正就是比较简单的东西,弄一弄就得了,是吧?是不是那一部分人还会转向全站?你看我想的有多么的细,同学们,你们对自己的职业生涯负不负责的,你们都不去想这些问题,但是我要去做课程,真的要把你去引导到全站的话,我一定要想这些问题的。 那么所以说我的理解里面的权杖应该是什么呢?应该是那些企业,就是那些追这个临界点的企业,由于 a i e 冲击,他发现两个人没必要了,一个人全部搞定了,那么他会偏向权杖,那他给的薪资并不高, 那么还有一部分是什么呢?大厂在做实验,在做探索,他再看一下这个到底行还是不行,那么这个他到底行还是不行?我不知道,我他探索探索出来过后,我要看他的问题怎么解决。就是权杖的项目的话,他可以往权杖上靠,那复杂项目他怎么弄? 那么他就需要这个对这个人的要求有多高,他学到什么样的程度?那你后段要学,前端要学, ai 要学,那运维要不要学?那全都要学啊,那全站嘛,到底要学到什么样程度呢?那以后还要不要各个领域的专家,比如前段专家,后段专家,他要不要共存呢?就到底会什么样子?我现在看不清楚, 但是呢,我现在也持一个比较开放的心态啊,同学们既然天天说袁老师要全站,全站,行,我接受啊,我现在也在慎重的考虑要不要去整套全站课程。但是呢,这个事情呢,我要跟同学们解释清楚。这一块我是有疑问的,知道吧,我这个逻辑是不太能想的通的 啊。我有一点点的,但是我也愿意去尝试。但是呢,我建议呢,现阶段的同学们还是先把全站学毕业先把薪资提上去,然后呢再说全站的事。好吧,其实我感觉这个也是 跟对这个领域的一些理解有关,以及经验等等。我觉得应该是这样,因为我不能去看什么,我不能去听市场的, 你知道市场的声音是带情绪的,这能理解吧?比方说好的时候的声音跟股市一样,对吧?好的时候老天天莺歌燕舞,坏的时候天天要不行了,天灾已死。对,就是他,市场的声音是带情绪的,情绪呢,他会把一些东西放大,比方说他有可能是某一个人,他经历了一些事情,他带了一些情绪, 他可能不能怪自己啊,他只能怪社会啊。那么把社会的一些声音放大过后呢?他容易宣传出,宣传出一种场景出来,但是呢,我们作为一个负责任的老师的话,我们 要参考这个情绪,但是呢,不能完全相信这个情绪,孩子的理性分析到底是什么情况?有的时候素质是冰冰冷冷的,有的同学现在的比二十年要差,但是呢,实际上我得到的数据现在的情况比二十年要好很多很多,二十年是最差的,而且我都快绝望了,我都快抑郁了,这个时候我要吃药睡觉,现在情况好很多, 就是我看到是一个整体的数据,而不是某一个人的一个情绪放大器。综合情况吧,反正现在呢, 他都处于一个比较混乱的一个年代啊。没事,我们保持开放的心态吧,什么东西我们都去尝试尝试。哎,管他是不是泡沫,我们去学呗,就不就完了吗?学下来发现哎呀,也没多少东西。然后呢,全站的话我们也打算,我也在考虑要不要弄啊, 我现在真的是那么考虑这一点。没事,该弄就弄吧,无所谓,反正我觉得大家呢,还是那句话,有一点是不变的,就是大家一定要动起来,就是不管你焦虑也好,不焦虑也好,你怎么想的你就怎么动,你觉得 ai 要学 ai 你 就去学,你觉得要走全站你就去走,你只要在动就绝对没坏事。 哎,你学了一件东西和不学他总比不学好吧,他可能没用,但是他至少不比他差吗?是吧,是这个道理吧。哎,我多学一个东西,我和我完全不学他总要好一点吧,是不是这个道理就是管他那么多,你动起来就完事了,哪怕就是我要转行,我劝你劝不住,那你就去转, 你反正是早晚要转的,你还不如早点转,转了看一下外面啥情况,然后再回来,是吧?准备待在那里啥都也不动,好吧,是不是这个道理? 嗯,那基于就是目前现状,比如说作为前端开发人员来说,我们在这个 ai 学习 方面,当然也有的人去说可以去学那个 a 进的开发等等。您觉得就是作为前端的来说,我们应该在 ai 这方面去学一些什么 a 政策开发,我觉得是以后每一个人都必须要会的, 因为以前呢,我当时不了解 agent 开发的时候,我觉得那是一个职业方向,后来了解了过后,发现那个玩意根本就不是一个职业方向,那是个每个开发者必会的技能。就好比说一个行政,他必须要会 office, 会 word, 一个后勤,他必须要会做采购,这他的必会的一个技能,他不是一个职业方向, 因为他太薄了,非常非常的薄,他难以撑起一个职业方向。就是这个世界上没有一个 excel, 其实挺复杂的,这个东西叫做数据分析。 所以为什么数据分析的薪资不高呢?因为这个尽管一个 ceo 的 功能挺多,但是单靠了一个很难撑起一个职业,所以说数据分析还得去学习一些跟数学统计相关的东西,所以就是一个工具的使用这个层面,这很难撑起一个职业啊,这是历史规律所导致的,可能短期内的出现一些工具错配, 但是呢,我不认为那个东西能够成为一个职业方向,但是全站倒是有可能,无非就是刚才我说的那几点疑问而已。所以 a 政策是要学习的,我觉得每个做技术都要学习的。那比如说在 ai 的 其他领域,那前端有这种 ai 还有啥其他领域? 不知道算不算吧?比如一些大模型开发这种。什么叫大模型开发?你要训练模型啊?啊?对,这种你玩不起要不起四个二要不起要不起的那个你得先去整个硕士,而且最好是数学系的, 然后要去熟读各种国外的的一些论文,然后自己还要去发表一些论文。整死你就学习读硕的,他们一开始冲着算法工程师去的,后来算了,惹不起。那些人跟疯子一样惹不起啊。 嗯,明白明白,没有其他问题了,反正动起来就完事了。动起来是最能够解决焦虑的,只要你在学习。你放心,甭管你学啥,你哪怕你先去学个 吹唢呐或者是吹个啥,随便你学个啥都行,你学个唱歌都行,他都能解决你的焦虑,只要你在动,那就是有收获的好呗。嗯,好,谢谢袁老师。不客气啊,拜拜。

在前端的历史上哈,出现过很多种判断一个东西是不是数族的方法,而且像这个问题呢,也是经常作为一道面试题出现的,而到现在呢,很多方法都不能再用了哈,为什么不能再用?这里边涉及到很多的技术细节,了解这些细节呢,不仅仅是说对判断数族有帮助, 而且对于你以后啊消除代码的一些隐患,也是能够起到很多的作用的。咱们聊一聊啊,判断数族他的那些不同的方式,以及这些方式到底有什么样的问题? 首先是最奇葩的就是使用 jason 字母串来判断数组,这种方式呢,我是看到有一些哥们啊,会用这种方式来写出一些奇葩代码,它的意思是啥呢?比如说这一个数组啊,不管数组里边是啥吧。然后呢,我们可以使用 jason 把它数组呢变成一个 jason 格式的字母串,我判断啥呢?判断这个字母串的第一项是不是一个左中括号啊?他是用这种方式来判断的, 然后打印看一下啊, israel 好 像是没啥问题,是吧?哦,得到结果呢为处。那为什么说数组里边啊,他可能会出现地归引用,比如说数组里后边是一个对象,对象里边呢, 他可能某一个属性又等于这个数值本身就是一种递归引用,一旦出现递归引用,你记住了,节省格式去序列化的时候是要报错的,他是无法序列化的。因此第一种方式来判断数值的话,就是完全搞笑的哈,不能用的 好。那么接下来是第二种方式,第二种方式是啥呢?就使用这个方法,这个方法在八百九十的原型上,是吧?一个 toast, 它可以把任何对象转换成一种整数格式,然后呢去掉这个方法啊,把这个数值呢作为 z 四传进去, 我们可以得到一个值,我们可以去打印一下这个值啊,我们可以发现呢,这个数组调这个方法之后呢,得到了这么一个字母串,哦,这个后边给的是一个 a r, 那 么我们只需要判断这个字母串跟这个字母串是不是一样的,他如果说是这样的一个字母串的话,那么就说明这个东西他就是个数主。 你别看这个方法感觉很奇怪,我告诉你哈,这个方法是过去最正统的判断数主的方式,你看一些早期的一些框架呀,一些第三方的原码里边,他们都是用这种方式来判断是不是数主的, 但是呢,这个方式现在已经不行了,为啥不行了呢?就是 es 六出现过后啊,这里边可能会出现问题,比方说我们这里呢,它不是一个宿主,它是一个普通对象,那明显呢,这样得到结果就不是一个宿主,是吧?但是呢,我可以通过一个符号来改动,它叫 simple, 它叫做 two string tag, 我 可以把它改为任何的字,甚至我这里写中文都可以随便改。 改完了之后呢,你再用突斯顿来调这个对象的时候,你会发现他这个位置就变成了你所指定的值了,那也就意味着我这里是不是可以改成二位?好,这样子一打印,看一下是不是得到这么一个结果了,而他是一个宿主吗?并不是,他是个普通对象而已。当有朋友说,袁老师,你这样子不就钻牛角尖了吗?谁让他去改这个东西啊?这锅应该是他的吧,不应该是我的吧。 说的没错,这里呢?关键看你这个判断诉阻这个行为到底是在什么环境下去写的。如果说你是在一个业务开发的环境下边去写的话,那无所谓,你这个锅肯定能甩出去,跟你没关系。谁让他改的呀,对吧?偷他绩效, 偷他奖金,跟你没关系。但是如果说你写的一些代码,他不是在一个业务开发环境里边,而是在一个公共库的环境里边,甚至是一个开源公共库的环境里边,那你的代码使用的人群就比较多了,而他要应对的场景可以说是无穷无尽的, 到时候出了问题,你这个锅是甩不出去的。很简单,因为你这个酷的人,他会觉得别人为什么没问题呢?为什么你这个地方要出问题呢?别人我可以这样做就没问题,就能判断出来你这个判断不出来那是谁的问题?就像以前那个浏览器大战的时候是吧, 有些浏览器他率先推出了纠错功能,就是哪怕你 atm 标签写错了,我能给你纠正过来。那你说 atm 标签写错是谁的责任?是开发人员的责任吧?但是一旦有浏览器他做了纠错,那些没有纠错的浏览器就 再也没有竞争力了,你懂我这意思吗?关键是看你的代码是在什么环境里边去写,是给谁在用。为什么?我经常说写通用性的代码,他要求是极高的,因为你要应对的是无穷无尽的场景,你不知道他怎么在用你的函数,但我这里是在说判断数值吗?也不是,我是在说在不同的场景下写代码,他的要求是不一样的。但如果说你永远要去做业务开发的话,那确实这些玩意你不接触也罢。 那换而言之,如果说你有一些追求,想要往更高的层次去发展,不像在底层天天卷卷的没边了,那你就必须要对自己有高要求,学知识就要学准确,学深刻,无论是知识和能力层面都必须要高要求,而你要提升知识训练能力,就好好来看我的大师课。大师课是完全免费的哈,但的确完事 了,大师课里边不是跟你讲这个玩意哈。大师课接触的是前端最重要、最核心,最能够直接影响你薪资高地和职业发展的核心知识。那我问大家一个问题啊,前端什么叫做核心知识? 下个定义呢?下不出来。那我给你下什么知识对你的薪资影响最大?什么知识就越核心能同意吧?咱们可以达成共识是吧?说大师课里边讲的所有知识啊,他之所以叫做核心知识,就是因为大师课里边涉及到知识对你的薪资的影响和职业发展的影响是最大的。 你花几天时间把咱们大师课认真的学完,学完之后这里边的讲的东西,他能够在你整个职业生涯发展期间起到持久的作用。你今天的讲的东西,他能够在你整个职业生涯发展期间起到持久的作用。所以说这个课应该是每一个学前段同学啊,最先应该搞明白的课程, 这个课程目前可以免费领取。怎么领?在咱们账号主页,点击头像进入账号主页,根据提示领取。完事了啊,好说回来。然后第二种方式呢,在目前来看已经有缺陷了,有更好的我们就选择更好的去使用。 那么第三种方式呢?使用 instance of 的 也是一种比较常见的判断数值的方式,是吧?啥意思呢?就是说我们这里一个数值啊,然后呢,我们使用这种方式来判断 instance of array, 它在不在 array 的 原型链上, 判断出来好像是没啥问题,但是呢, is tessou, 为什么那些第三方库啊,框架也好不使用这种方式来判断数值呢?因为它也有缺陷。什么缺陷啊?因为圆形链是可以改的呀,我这里是个对象,我可以去改它的圆形链啊, set plus typo, 把它圆形改成数组的圆形,这样一来,这个对象也变成数组了。 当然了,这里又有同学争论了啊,他说袁老师,你这样一改的话,他不就是数组了吗?对吧?他圆形都是数组了吗?那就看你去怎么去定义数 组呢?它是一种数据结构,定长连续空间,读写的时间复杂度为 o 一, 对吧,这才是数组的特征。 如果说你用这种共识来定义树组的话,那它明显不是一个树组,因为它的数据结构不符合树组的特征。那这个 istencil 还不仅是这个问题啊,它还有什么问题呢?那如果说你的页面上有框架页,有 f ring, 那 好吧,那现在的 g s 里边涉及到两个而瑞对象,一个而瑞呢,是来自于当前的顶层页面的而瑞,另一个而瑞呢,它是来自于框架页啊。拿到这个框架页啊, f ring 里边的 array, 这两个 array 是 不一样的哟,打印看一下, array 一 和 array 二,你看打印出来是 force 不 一样的,那也就意味着哪怕它真的是一个宿主,但是这个宿主呢,是在框架页里边去创建的,是 array 二来创建的,它是不是宿主,它肯定是宿主啊。但是呢,你用这种方式来判断出来是不对的,你看判断为 force, 它是不是数,它明显是一个数组啊,所以说它 is 整数也是不能用的。那现在能用的是啥?能用的只有这个 is a r e 这种是判断数组是万无一失的啊。比方说我们这里呢,用 is a r e 来判断是不是数组,你看一下,得到结果就是 true, 哪怕它是在另一个框架里边去建立的数组,那 这个方法它是怎么来判断数组的呢?它判断的就是数据结构,就看一下这个东西给过的东西是不是一个数组的数据结构。它判断的方式呢,是用 c 加加的本地代码来进行判断的。因此这个方法你可以打印看一下这个方法,它是用 c 加加写的本地代码 native code, 你 是不可能磨练出来的。你说我写一个一模一样的方法出来,你写不出来,它既没有判断原型, 也没有判断它那个所属的是哪个构造器,都不是它判断的数据结构。比方说,哪怕你这个数值呢,你把圆形给它制空,哦,把这个字设 prototo 啊,它都没有圆形了,保存,你看一下,它照样是个数值,你看这个 ar, 它里边圆形都没了,它仍然是个数值,所以用这个 isr 判断出来的数值是最准确的判断方式啊。以后呢,遇到相似的面试题,你就可以拿出来说一说。

注意,本视频耗时六个月制作,制作时长六百分钟,陪你系统学习网络安全,这应该是目前最良心、最全面的入门到入狱的网络安全全套教程,哪怕你是零基础也可以听懂。声明,此教程仅供学习,禁止用于违法行为。 大家好,今天将为大家介绍 java script 函数,它在编程中最为重要,能提升开发效率。接下来我会详细讲解相关内容。首先是什么是函数呢? 函数是分装可重复使用的代码块,在 javascript 里分装可重复使用代码块具有显著优势,一方面能提升开发效率,避免代码重复编写,使代码结构清晰,便于维护扩展,降低出错概率。另一方面可简化代码逻辑, 将复杂逻辑拆分为独立部分,让代码更易理解和调试。函数定义一次多次调用具有显著优势,一方面节省开发时间,避免重复编辑代码。另一方面增强代码一致性,保证每次执行操作和界面相同,使代码更稳定可靠。 接下来我们学习一下函数声明方式,这在 javascript 中,方程声明是基础且常用的函数声明方法。学习方程关键字开头后接函数名参数 与函数体。此方式定义的函数可重复调用,在不同位置多次使用,实现代码复用。同时,函数能携带参数,依据参数值执行不同操作,增强灵活性。函数表达式可将匿名函数复制给变量,像 ctrl fn 等于方审,后续能通过该变量调用函数箭头函数具有显著优势,其语法简洁,省略方审。关键字定义更简短易读,适合简单函数, 且无需单独类似值继承字外层或全集作用域,避免类似指向混淆,便于代码理解维护, 还适合简单操作。用于数组方法,能高效处理数据。现在我们看一下函数参数与返回值。行餐与时餐是编程中重要概念。行餐如同张伟福,在函数定义时 声明代表将接收的数据,如方程 a、 d、 d, a、 b 里的 a 和 b。 时餐则是调用函数时传递的实际数据, 像 a、 d、 d 三五中的三和五,它们赋值给行餐,让函数处理数据。尾特语句的作用显著,它能从函数中返回一个值,且函数执行到尾特语句只会立即停止, 并将指定值返回给调用者和传递计算结果等数据。其返回值使用也十分灵活,能复制给变量或作用于其他表达式。像将 a, d, d 函数 返回值赋给 rad 的 变量现在是函数,若未使用 return 语句执行完毕,会默认返回 and fade。 这意味着调用此类函数时,接收返回值变量会被赋予 and fade。 例如 say hello 函数调用它不会返回明确值,用变量接收该变量值就是 and fade。 现在我们看一下作用域。 全局作用域是代码最外层作用域,其中声明的变量可在代码各处访问,为程序提供供养空间。全局变量贯穿程序生命周期,不会因函数执行结束而销毁,方便数据共享。 不过这些可能引发命名冲突等问题,使用时需谨慎。函数作用域具有重要意义,其变量只能在函数内访问的分装性,避免不同函数变量相互干扰。内部 变量作用范围局限于函数内,执行后会销毁,释放内存,并有效提高代码安全性,以可维护性 快捷。作用域由花括号界定,用 let 和 cos 声明的变量仅在当前作用域有效,可避免全机污染,让代码逻辑清晰。变量生命周期明确。 let 变量可重新复制, cos 的 常量,复制后不可修改。使用 cos 能保证稳定性,定义常量时优先选用。 现在我们来学一下常用内置函数。 person 和 personfloat 属于类型转换的重要函数。 person 能将字母串转换为整数,从开头解析到非数字字母。 person float 可将含小数的字母串转换为浮点数, 满足处理小数的需求。 mass readymouth 函数能生成零到一间均匀分布的随机小数,每次调用结构不同,可模拟随机事件,不生成随机数序列。 应用广泛,如游戏开发中随机生成道具位置、抽奖程序,确定中奖结果,结合其他预算,还能得到不同范围随机数。 mathfloor, maths cell and mathrand 是 常用的取整函数。 mathfloor 向下取整使用小数,如 mathfloor 得三, maths cell 向上取整近为正整数,向 maths cell 为四。 mathrand 的 四舍五入,小数 大一等于零点五进位,小零点五舍去,如 maxon 三点五十四。介绍两类定时器函数, c time out 函数可创建一次性定时器,在指定毫秒输入后执行回调。函数适用于延迟任务,如页面加载后延时提示 c、 l、 n、 v、 t 函数则按指定间隔重复执行回调直至清除。常用于周期性任务,如定时更新页面数据。最后感谢大家的聆听!

如果屏幕出现 e 零零二错误代码该怎么处理?首先我们要知道 e 零零二表示水箱液位错误,我们水箱里面有两个液位开关, 下面这个是低液位开关,上面这个是高液位开关。 出现一零零二错误,可能是低位开关,浮球没有升上去,此时我们只需要轻拍水箱,如果轻拍后仍然报错, 那可能是液位开关损坏,更换液位开关后依然没有解决,可以后台私信哦。

电脑开机提示设备需要修复错误代码,零 x c 零零零 e 错误文件,温唠的点 e f i。 像这种情况一般来说都是引导出现问题了,咱们可以使用 u 盘在 pe 模式下尝试修复。 进入 p 之后呢,先打开此电脑,观察一下 windows 分 区,可以看到 windows 目录是正常的,那接下来咱们可以使用硬盘精灵工具确认一下 esp 引导分区的目录, 可以看到这个 bug 记盘就是 uefi 引导分区的目录,但是发现引导目录有一个带尔的文件夹,这种一般是品牌机才会有。没关系,咱们直接选中记盘给它格式化掉,格式化前一定要确认它是 uefi 引导分区,千万不要把系统目录给格式化了。 接着呢,点击左下角的开始菜单,找到系统工具,选择 uefi 引导修复工具。咱们先点击这个 esp 分 区,刚刚看到是 g 盘,接着呢,点击开始修复,然后选择 c 盘 windows 所在的目录, 等待修复成功。之后呢,咱们重启一下电脑,看一下这次能否顺利地进入系统。 可以看到引导修复之后重启电脑已经不会再进入修复界面了,而且已经顺利的进入系统了,那么今天这台电脑开机提示需要修复的故障就已经解决了。

五字旗这个玩意吧,很多初学前段的同学都做过,是吧?这个游戏呢,它的关键点呢,不在于说你落子,落子很简单,对吧?点哪个地方,哪个地方就出现一个子, 很简单,关键在哪呢?关键在于你要判断胜负,谁赢了。那么于是呢,我们可以这里写个函数啊,我们来研究一下怎么来判断胜负,反正我要讲的呢,也并不是说五字旗,五字旗你们平时工作也不用是吧?我们的目的呢,是要通过这个判断胜负啊,学习到一些开发的技巧,这里边用到了很多的一些代码技巧哈。 首先我们来设计一下这个函数,要判断胜负的话,你需要告诉我啥呢?那这里就有不同设计了,如果说你简单的来设计的话,那就说你告诉我一个棋盘,你把这个棋盘上的所有落子情况啊,就是个二位数数,比方说黑的就为一,白的就为二啊,随便吧, 你把那个所有的落子情况全部告诉我,那么逻辑上是不是一定可以判断他的胜负关系啊?对吧?那么这是一种方式, 这种方式好吗?其实不够好,为啥说不够好呢?你看好,那如果说现在我还没有落子的情况下,是不是胜负关系一定没有出来,对吧?这棋盘都没变化,哪来的胜负关系呢?也就是说胜和负是在什么时间点定下来的?一定是在落子之后定下来的,对吧?也就是说 我要判断胜负的时候,没有必要去看整个棋盘,我只需要看我点的那个落子的位置,他周围的情况就可以了,比方说我落子落在这,那我看什么呢?我其他地方一概不看,我只看这个横向,哎,是不是连成了五个,然后呢?纵向是不是连成了五个?然后呢?斜线上 连成了五个,或者是反斜线上是不是连成了五个,对吧?我只需要看这么四个方向就可以了,你像这些地方有关系吗?跟我就没关系。那么这样的判断的子的数量是不是少很多,对不对?那么这就是一种优化。因此呢,我们在实现这个判定胜负的函数的时候,你不仅要告诉我棋盘,你还要告诉我这一次他的落子的位置和颜色,因此呢,你还要告诉我他的落子的坐标, 以及呢它落子的颜色啊,这颜色呢,比方说黑色就用一,白色就用二,随便啊,你自己定。你把这三个东西告诉我,而我要判断啥呢?其实我就要判断四个方向啊,一个是横向上是否胜利,或者是横向是否胜利,或者是 斜向是否胜利,或者是反斜向是否胜利,对吧?就这么四个方向。那么可以想象的到,这四个方向是不是一定都是函数啊?那现在有这个函数吗?没这个函数,没这个函数的话,那么我们就定义这么四个函数, is horrendor win。 好, 这是一个函数,然后呢?纵向一个函数, 斜向一个函数,然后呢?反斜向一个函数,对吧?因此呢,我们这一块呢,就去掉这个函数,来完成把一些参数都传进去啊, point, color 都传进去,那么剩下的也是一样啊,好,于是呢,代码就写成了这么一种格式。 那么接下来呢,我们再把注意力集中到这,这四个应该都是函数,是吧?那这个函数怎么写呢?最笨的办法是啥?就是一个一个写呗,对吧?第一个函数,三个函数,然后呢一个个去写,但是这样做呢,一是麻烦,第二呢,你可以想象的到,这些函数是不是里边的实现过程一定有很多的重复代码呀? 因此呢,我们这一块该怎么来处理更合适呢?我再说一下,我们现在讲的虽然是五字旗,但是呢,实际上讲的是开发技巧啊,这四个函数有重复代码 怎么来提取?那我们进到游戏里边再来思考一下这个问题啊,比方说我们落子在这了,那么现在我要基于这个点来判断胜负关系, 我们首先看横向,在横向上怎么来判断胜负关系呢?哎,我们是不是可以生成两个时针,一个时针往左边移动,一个时针往右边移动,每次往左右移动的时候,看到一个相同颜色的子,我就给他计数加一,这样子不断的移动,是不是我就能够算出在横向上一共有多少个黑子? 把数量加起来,加起来过后大于等于五,那么就说明横向上就胜利了。那如果说不是横向呢?那是纵向呢?来纵向啊,看一下有什么样的不一样,是不是我们还是去生成两个直角,只不过呢,这一次呢,一个直角往上边移动,一个直角往下边移动, 也就是说啥意思呢?不管你是啥方向,其他地方他的逻辑都是一样的,不同的逻辑是啥?只是直角的移动不一样,是不是?那么面对这样的场景,我们怎么来处理这个代码呢?我们就可以使用高阶函数了, 就这四个函数是通过另外一个函数生成出来的啊,叫做 create is win, 通过这个函数来生成一个函数啊, border point, color 啊, 也就说这四个函数啊,它是通过 create is win 来生成出来的,只不过生成的时候呢,传递的参数不一样,因为有差异嘛。传递什么样的参数呢?不就是指征的移动吗?一个是什么?第一个指征的移动方式,一个是第二个指征的移动方式,你把这两个指征的移动方式告诉我,我就可以给你生成这个函数了。那 这里怎么来告诉他移动方式?那移动方式是啥?不就是函数吗?你给我一个坐标,我给你一个新的坐标,不就移动了吗?所以呢,传两参数啊,一个是给我一个 x, y 横向吧,那么我给你返回的是啥呢?一个新的,然后给你写出来了,看看正不正确啊。没问题啊,横向呢,就是 x 不 变,对吧?哦,不对哦,横向是 y 不 变哦,它怎么能是 x 不 变呢? x 加一和减一是吧?这横向那么重项呢?那就是 x 不 变,横坐标不变,对吧?重坐标加一减一,那么斜项呢?你自己看吧。而反斜线呢啊,自己看啊,没问题,那你看现在的代码结构是不是很舒服?这一块只有包含了有差异性的代码,没有任何的重复。 两个直角移动的方式告诉他,然后这边来统一处理,生成一个函数。那么现在问题呢,是不是就集中在这了?那这怎么处理?我就开始计数加呗,对不对?目前落址的算一个嘛?然后呢,两个直角就开始移动了,是吧?那么接下来就处理第一个直角,然后再处理 第二个直角,那么这两个直角的处理方式不都一样吗?就看第一个直角的移动过程中,移动到不能再动了,他一共有多少个相同颜色的纸,对吧?那么第二个直角是不是一样的处理方式?第二个直角再动,我看一下第二个直角有多少个相同颜色的纸,那么一起加起来不就完了吗?因此呢,我们这一块呢,又可以进行抽理封装,我们抽理成一个函数, 叫做 count 计数。计数什么呢?表示目 count, 就是 在移动中计数。你把棋盘告诉我,把那个棋式坐标告诉我,把那个移动方式告诉我,把那个颜色告诉我,对吧?我来给你返回。沿着这个坐标往这边移动,有多少个子等同于这个颜色返回一个数字,那如果说这个函数已经写好了,这里是非常简单的,那个 count 等于啥? count 就 直接等于加上目 count 啊,这个第一个 p 一 的移动方式对吧?然后再加上它 p 二的移动方式,对吧?三个相加不就是一共有多少个相同颜色的纸连在一起吗?对不对?最后呢,我们来判断一下啊,判断一下这个纸是不是大于等于五就完事了。你看事情被一步一步分解,复杂度被一步一步降低。对,这个五字形是如此,对所有的复杂问题都是如此,关键是看你如何来分析和分解问题, 只要你能够把一个复杂的不确定性的问题分解成一个一个确定性的简单问题,你只要有这个能力,你随便什么功能都能实现,那么说具体的去敲这个代码,你可以通过 ai 工具,你可以自己写,都行哈,因为你都分解出来了,这个事情就变得简单了。 关键是这个分析和分解的能力需要好好去训练。怎么训练呢?好好来看我的大师课。大师课是完全免费的啊,来领取。完成了,在大师课里边,我花了将近两个小时吧,通过一些效果案例,告诉同学们遇到一些复杂问题的时候,该如何去分析和分解,如何去写出高质量的代码。而大师课里边的还不仅仅是开发能力的培养,还包括了前端最重要,最核心,最能够直接影响你薪资高利和职业发展的知识, 这些知识可以说一次学习受益终身。因此呢,无论你是想高薪就业,还是想在职提升,大师课,他都是你的必修课。这课呢,目前可以免费领哈。怎么领?在咱们账号主页,点击头像进入账号主页,点击提示领取,完事了。 好,你看现在我们的问题是不是就分解到这了?那么这个函数的作用就是从这个位置出发,一次移动,看能找到多少个跟这个颜色一样的棋子。那我们接下来就计数呗, house 等于零,怎么计数啊?就直接循环嘛,对吧?不断的移动嘛,我们定一个坐标, 直接移动一个位置,对吧?那么这里的循环就是屁有效,该位置有效,这个位置没问题啊,有棋子,并且棋子的颜色跟这个颜色是一样的,只要这个位置有效,那么干嘛?我 ctrl 是 不是要加加对不对?加完了过后是不是要继续移动了, 然后再来判断这个位置是不是有效的,有效的继续加加,直到这个位置无效为止。那么最后循环完了过后,是不是这个数量就可以返回了,对不对?那么现在问题是不是就变成这个问题了,某一个位置是不是有效? 这个函数 is valid, 给我一个棋盘,给我一个坐标,我来判断这个坐标是不是有效啊,当然还要给我个颜色啊,看这个坐标的位置是不是等于这个颜色。那么首先呢,我可以拿到这个棋盘的行的数量,对吧?以及它的列的数量,以及到目前的坐标的 x 和 y, 那 是不是可以判断这个坐标是不是在棋盘之内? 这里是 cos 啊,这里是 rose, 如果跑到棋盘外面去了,那显然是不一样的,是吧?那如果说在棋盘内呢?那是不是要看一下落子的情况对不对?那个 ball 这个相应的位置是不是等于相应的颜色,对吧?这不就是有效位置的判断吗?所以说这里呢,直接调了个方法啊,把棋盘位置和颜色传进去,有效我就加你。那么整个过程就写完了啊, 不再是重申哈,我不是跟你讲五字棋哈,我是给你讲一个复杂问题,是如何一步一步的分解出来的,这种思路你学会了,所有的问题都能迎刃而解哈。

注意,本视频耗时六个月制作,制作时长六百分钟,陪你系统学习网络安全,这应该是目前最良心、最全面的入门到入狱的网络安全全套教程,哪怕你是零基础也可以听懂。声明,此教程仅供学习,禁止用于违法行为。 大家好,今天将为大家介绍叉 y scope 循环在编程中十分重要,能让代码高效执行。现在是条件判断。 java script if else if else 结构可进行多条件判断,先判断 if 条件不满足就依次判断 else if 条件 都不满足则执行 f 代码。而适用于多种条件分支情况,如根据分数段输出成绩等级,能精确匹配不同条件。 switch case 语句通过表达是指匹配多个 case 相等则执行对应语句,无匹配则执行。对 float 语句 实现多分支选择。在处理多个固定值判断时,该结构简洁清晰,可读性强,如输出星期名称,可避免冗长的 f o s 语句。三元运算符 是最简简洁的条件判断方式,依据条件表达式反决定返回值,条件为真,返回至一,否则返回至二。适用于简单的条件复制场景, 如根据布尔变量复制乘法。相比 f l s 语句,它更简洁,是代码紧凑易懂。现在是 for 循环基础。 for 循环结构经典,如 for let s i 等于零, i 小 于等于十等初识化变量。循环条件和迭代语句相互协助, 使代码能按指令次数执行。其用途广泛,可对数组元素多次处理,也能重复执行某段代码,是处理数组便利的使用工具。 four of 循环转为便利数组元素设计,能依次访问数组每个元素, 它使用简洁,操作高效,可避免传统 flow 循环的复杂写法,让数值元素操作更便捷,是处理出走时非常实用的工具。 flow 循环可用于便利对象属性等媒体对象和媒体属性,包含自对象自身 及继承属性。借助该循环能便捷访问对象各属性及其值,为操作对象属性提供高效途径,在处理对象数据时十分实用,且是微奥循环。 java script 里 vr 循环基本语法为 vr 条件,它以条件判断为执行依据,先判断条件真假。若为真,执行循环体代码执行完再判断,直至条件为假。条件判断决定循环是否继续,为真,则继续执行,这是其运行的核心逻辑。 堵胃奥循环的显著特点为,先执行循环体,再进行条件判断。无论条件是否成立,循环体至少执行一次。条件决定循环是否持续。若条件始终为真,循环将不断进行。若条件为假,循环则立即终止。 接下来是循环控制。瑞克语句功能强大,它能立即终止当前循环,不再执行剩余代码,直接跳出循环。执行后,后续代码在多层签到循环中,可按需跳出待定层,避免不必要执行。 缓存有语句可跳过当前循环,后续代码直接进入下一轮迭代。结合条件判断使用,能跳过不必要步骤,优化执行逻辑,提高效率。 在数据便利中,它可跳过不符合需求的数据,精准呈现出符合条件的数据。先来看一下数组便利 for each 方法用于便利数组,为每个元素执行一次回调函数, 回到函数当前元素与所引两参数便于操作元素,其以简洁方式实现数值循环,避免传统负循环繁琐语法,提升代码可读性和可维护性,进而提升开发效率。现在是数值处理有三个使用方法,慢方法可对数值各元素转换操作, 生成新数组。 beta 方法能按特定条件筛选元素,创建符合条件元素的新数组。 reduce 方法,执行 reduce 函数,将结果汇总成单个值,实现复杂数据处理。最后感谢大家聆听!