Javascript 中你最应该知道的 33 个概念

33 个 JavaScript 开发者都应该知道的概念 你真的认为你了解多少 JavaScript?你可能知道如何,理解,甚至可以。但是你知道什么是类型化数组吗?你不需要现在就了解所有这些概念,但最终你会在你的职业生涯中用到它们。这就是我建议你的原因,因为你很可能会遇到其中一个主题,然后你会想要一个教程来完全理解它。 阅读详情

你觉得自己对JavaScript了解多少?你可能知道如何编写函数,理解简单的算法,甚至可以编写类。但是你知道类型化数组是什么吗?

你现在不需要知道所有这些概念,但你最终会在以后的职业生涯中需要它们。这就是为什么我建议把这个列表收藏起来,因为你可能会遇到其中一个,然后你会需要一个教程来完全理解它。

我们归纳了 33 个前端开发者需要知道的 Javascript 核心概念。希望当你不理解这些概念的时候能去看看它们详细的介绍(我们也在每个概念的末尾给出了详细的介绍地址)。

1. 调用堆栈

调用栈是一种解释器机制(就像网页浏览器中的JavaScript解释器),用来跟踪它在调用多个函数的脚本中的位置——当前正在运行的函数以及在该函数中调用了哪些函数等等。

详细: https://developer.mozilla.org/zh-CN/docs/Glossary/Call_stack

2. 原始值

除了对象之外,所有类型都定义了不可变值(即不能更改的值)。例如(与C不同),string是不可变的。我们将这些类型的值称为“基本值”。

详细: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures#%E5%8E%9F%E5%A7%8B%E5%80%BC

3.值类型和引用类型

赋值为非原始值的变量将被赋予该值的引用。该引用指向对象在内存中的位置。变量实际上并不包含值。

详细:https://juejin.cn/post/6844904198484541454

4. 类型转换

类型强制意味着,当操作符的操作数是不同类型时,其中一个操作数将被转换为另一个操作数类型的“等效”值。

详细: https://stackoverflow.com/questions/19915688/what-exactly-is-type-coercion-in-javascript

5. 双等号()和三等号(=)

JavaScript有两种看起来相似但又非常不同的方法来测试是否相等。可以用==或===来测试是否相等。

详细:https://segmentfault.com/a/1190000013267129

6. 函数作用域,块作用域和词法作用域

在 ES5 及之前版本,JavaScript 只拥有函数作用域,没有块作用域(with 和 try...catch 除外)。在 ES6 中,JS 引入了块作用域,{ } 内是单独的一个作用域。采用 let 或者 const 声明的变量会挟持所在块的作用域,也就是说,这声明关键字会将变量绑定到所在的任意作用域中(通常是 {...} 内部)。

详细:https://segmentfault.com/a/1190000008440514

7. 表达式和语句

进行这种区分很重要,因为表达式可以像语句一样工作,这就是为什么我们也有表达式语句。但是,在另一方面,语句不能像表达式那样工作。

详细:cnblogs.com/1549983239yifeng/p/14598951.html

8. IIFE,模块和命名空间

一种常用的函数编码模式有一个奇特的名字:立即调用函数表达式。或者更广为人知的IIFE,发音为“iffy”。

详细:https://developer.mozilla.org/zh-CN/docs/Glossary/IIFE

9. 消息队列和事件循环

“异步JavaScript和单线程?”答案是JavaScript语言线程和异步行为不是JavaScript语言本身的一部分,而是建立在核心的浏览器中的JavaScript语言(或编程环境)和通过浏览器访问api。

详细:https://www.bbsmax.com/A/kjdwajrGJN/

10. setTimeout, setInterval和requestAnimationFrame

我们可能决定不立即执行某个函数,而是在以后的某个时间执行。这就是所谓的“电话预约”。

详细:https://www.cnblogs.com/ling-nl/p/14245218.html

11. Javascript 引擎

为Web编写代码有时感觉有点神奇,因为开发人员编写了一系列字符,就像魔术一样,这些字符在浏览器中变成了具体的图像、文字和动作。理解这种技术可以帮助开发人员更好地理解Javascript的运行机制。

JavaScript引擎的组成部分有哪些?

  1. 编译器。主要工作是将源代码编译成抽象语法树,然后在某些引擎中还包含将抽象语法树转换成字节码。

  2. 解释器。在某些引擎中,解释器主要是接受字节码,解释执行这个字节码,然后也依赖来及回收机制等。

  3. JIT工具。一个能够JIT的工具,将字节码或者抽象语法树转换成本地代码,当然它也需要依赖牢记垃圾回收器和分析工具(profiler)。它们负责垃圾回收和收集引擎中的信息,帮助改善引擎的性能和功效。

详细:https://www.cnblogs.com/onepixel/p/5090799.html

12. 位操作符,类型数组和数组缓冲区

对于计算机来说,所有的都是1和0。它不操作数字、字符或字符串,它只使用二进制数字(位)。简而言之,一切都是以二进制形式存储的。然后计算机使用诸如UTF-8这样的编码将保存的比特组合映射为字符、数字或不同的符号(ELI5版本)。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators#%E4%BD%8D%E8%BF%90%E7%AE%97%E7%AC%A6

13. DOM 和 渲染树

文档对象模型(Document Object Model),通常称为DOM,是使网站具有交互性的重要组成部分。它是一个界面,允许编程语言操作网站的内容、结构和风格。JavaScript是在internet浏览器中连接到DOM的客户端脚本语言。

详细:https://developer.mozilla.org/zh-CN/docs/Web/Performance/How_browsers_work

14. 原型继承

JavaScript是一种基于原型的语言,这意味着对象属性和方法可以通过具有克隆和扩展能力的通用对象来共享。这被称为原型继承,与类继承不同。

详细:https://developer.mozilla.org/zh-CN/docs/learn/javascript/objects/classes_in_javascript#%E5%8E%9F%E5%9E%8B%E5%BC%8F%E7%9A%84%E7%BB%A7%E6%89%BF

15. this, call, apply and bind

这些函数对每个JavaScript开发人员都非常重要,几乎在每个JavaScript库或框架中都使用。

详细:

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this

16. new、Constructor、instanceof和Instances

每个JavaScript对象都有一个原型。JavaScript中的所有对象都从原型中继承了它们的方法和属性。

详细:https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes

17. 原型继承和原型链

对于使用基于类的语言(如Java或c++)的开发人员来说,JavaScript有点令人困惑,因为它是动态的,本身不提供类实现(class关键字是在ES2015中引入的,但它是语法上的糖,JavaScript仍然是基于原型的)。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

18. Object.create 和 Object.assign

对象。create方法是JavaScript中创建新对象的方法之一。

详细:

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create
  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

19. map, reduce 和 filter

即使你不知道函数式编程是什么,你也可能使用过map、filter和reduce,因为它们非常有用,可以让你编写更清晰的逻辑,从而让你的代码不那么糟糕。

20. 纯函数,副作用,状态突变和事件冒泡

我们的很多bug都是源于IO相关的,数据突变,副作用。这些代码遍布我们的代码库——比如接受用户输入,通过http调用接收意外响应,或者写入文件系统。不幸的是,这是一个残酷的现实,我们应该习惯处理这些bug。

详细:https://segmentfault.com/a/1190000018524543

21. 闭包

闭包是将一个函数捆绑在一起(封装在一起),并引用其周围的状态(词法环境)的组合。换句话说,闭包使您能够从内部函数访问外部函数的作用域。在JavaScript中,闭包是在每次创建函数时创建的。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

22. 高阶函数

JavaScript可以接受高阶函数。处理高阶函数的能力以及其他特性使JavaScript成为非常适合函数式编程的编程语言之一。

高阶函数是至少满足下面一个条件的函数:

  1. 接收一个或多个函数作为参数。比如filter函数
  2. 返回一个函数。 比如bind函数

详细:https://segmentfault.com/a/1190000018528025

23. 递归

一种函数调用自身的操作。递归被用于处理包含有更小的子问题的一类问题。一个递归函数可以接受两个输入参数:一个最终状态(终止递归)或一个递归状态(继续递归)。

24. 集合和Generator

Generator对象由Generator函数返回,它符合可迭代对象协议和迭代器协议。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Generator

25. Promises

Promise对象表示异步操作的最终完成(或失败)及其结果值。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise

26. async/await

有一种特殊的语法以一种更舒适的方式处理承诺,称为“async/await”。它非常容易理解和使用。

await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。

详细:

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/async_function

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/await

27. 数据结构

Javascript每天都在发展。随着React、Angular、Vue、NodeJS、Electron、React Native等框架和平台的快速发展,在大型应用中使用javascript已经变得非常普遍。

JavaScript 语言中内建的数据结构及其属性,它们可以用来构建其他的数据结构。

详细:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures

28. 时间复杂度

这是一个非常常见的面试问题。简而言之,它是算法运行时间的数学表达式取决于输入时间的长短,通常谈论的是最坏的情况。

29. 算法

在数学和计算机科学中,算法是定义明确的指令的有限序列,通常用于解决一类特定的问题或执行计算。

详细:https://www.cnblogs.com/xinkuiwu/category/1594426.html

30. 继承、多态和重用

类继承是一个类扩展另一个类的一种方式,因此我们可以在现有功能的基础上创建新的功能。

31. 设计模式

每个开发人员都努力编写可维护、可读和可重用的代码。随着应用程序变得越来越大,代码结构变得越来越重要。设计模式被证明是解决这一挑战的关键——为特定环境中的常见问题提供组织结构。

32. 柯里化

函数组合是将多个简单函数组合成一个更复杂函数的机制。

详细:https://zhuanlan.zhihu.com/p/74585560

33. Clean Code

编写干净、可理解和可维护的代码是每个开发人员都必须掌握的关键技能。

详细:https://zhuanlan.zhihu.com/p/102367865

谐振电路原理与应用场景全解析 本文全面解析了谐振电路的原理、类型及其核心应用。详细阐述了串联谐振与并联谐振的工作特性,并重点介绍了其在无线通信调谐、音频处理分频以及电力系统滤波与无功补偿等关键场景中的实际作用。通过公式推导与实例分析,帮助读者深入理解LC谐振的选频与能量交换机制。 阅读详情

相关推荐

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1134

33个非常实用的JavaScript,建议收藏!使用到了一些API,简化了操作。

作者:黑马程序员前端 链接:https://www.zhihu.com/question/46943112/answer/2527242315 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 该方法用于检测给出的日期是否有效: 2. 计算两个日期之间的间隔 该方法用于计算两个日期之间的间隔时间: 距离过年还有90天~该方法用于检测给出的日期位于今年的第几天: 2021年已经过去300多天了~该方法可以用于将时间转化为hour:minutes:seconds的

qq_25884459的博客 215

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

鲁棒性,英文为Robustness(承受故障和干扰的能力),是许多复杂系统(包括复杂网络)的关键属性。复杂网络的鲁棒性研究对许多领域都非常重要。本文着重介绍了鲁棒性的基本定义、命名起源、分类区别、提升方法和具体应用,供大家学习参考。

weixin_46880696的博客 8万+

JavaScript开发者应懂的33个概念js-33-concepts

原文出处:https://github.com/stephentian/33-js-concepts 参考学习用,作为一篇指南 目录 调用堆栈 原始类型 值类型和引用类型 隐式, 显式, 名义和鸭子类型 == 与 ===, typeof 与 instanceof this, call, apply 和 bind 函数作用域, 块级作用域和词法作用域 闭包 map, reduce, filter 等高阶函数 表达式和语句 变量提升 Promise 立即执行函数, 模块化, 命名空间 递归 算法 数据结构.

han_xiao_xiao的博客 2822

VS2019+CAXACAD2023二次开发教程(一、环境搭建)

CAXACAD2023的二次开发相关文件和库都在的文件夹下。CAXACAD2023的默认开发环境是VS2019,如果是用VS2019的环境话,可以直接安装这个插件,安装好后就可以一键新建的项目,新建的项目会自动帮我们配置好所有的环境,并且生成必要的代码和初始的框架。(本来想用VS2022的,但配置环境太麻烦,用VS2022,增加一个环境变量是可以运行自带的例程的,但新建项目要配置的东西和环境太多,就放弃折腾了)

weixin_42968757的博客 4613

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

JavaScript开发者应懂的33个概念6-this, call, apply 和 bind

记录一个重新学习javascript的过程 ,文章并不是按顺序写的,写完就会更新目录链接 本篇文章目录是参照 @leonardomso 创立,英文版项目地址在这里。

qq_23918423的博客 105

(五)激光线扫描-位移台标定

线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大,也会导致速度变慢。下面以位移台为例讲解,如何标定位移台。

FlyWine的博客 2888

Switch 19.0.1 适配:Atmosphere 固件升级 10 分钟一次搞定,避坑指南

刚把 Switch 升到 19.0.1,开机卡死、老插件集体失效?这就是系统版本和自定义固件没对齐的典型症状。Atmosphere 这套 Switch 定制固件在 1.8.0 里补齐了 19.0.1 适配,跟着做,10 分钟让主机满血复活。 ## 这次 1.8.0 到底改了什么?影响速览 更新日志看着密密麻麻,其实对使用者的影响就三类,对照着看就行。 **稳定性:以前会翻车的角落被补上了**

gitblog_00822的博客 570

4-都2026年了,嵌入式发展前景怎么样,还适合入行吗?

本文系统分析了嵌入式行业的发展前景,指出到2026年嵌入式将迎来由"万物智联"驱动的黄金周期。文章回顾了嵌入式技术的四个演进阶段,从专用计算机到AIoT时代,强调其技术积累的延续性。作者从人才流向、产业智能化转型、高校新增专业等角度论证嵌入式行业的蓬勃发展,并提出"铁三角"模型分析其驱动力和护城河。最后给出职业发展路径建议,认为嵌入式适合长期主义者,在智能汽车、边缘计算等领域有广阔前景。文章建议读者抓住产业升级机遇,选择这一稳定且有复利效应的技术赛道。

指尖动听知识库 388

基于PUMA实现DOA估计-附Matlab代码

具体而言,PUMA算法将接收的信号分别在时域和频域上进行处理,并结合平稳合成(SS)和平稳子空间(SSP)方法,以提高估计精度。该算法将传统的基于协方差矩阵的最大似然(ML)和最小二乘(LS)方法扩展到了非均匀线性阵列(ULA)上,并通过对信号分离和DOA估计的优化,达到了高精度和高分辨率的效果。方位角(DOA)估计是信号处理中的一个重要问题,它的目的是确定从多个传感器接收到的信号的方向。本文将介绍如何使用基于PUMA的方位角估计算法来实现DOA估计,并附有相应的Matlab代码实现。

Byte_O_O的博客 495

JavaScript开发者应懂的33个概念

参考地址 英文地址:https://github.com/leonardomso/33-js-concepts 中文地址:https://github.com/stephentian/33-js-concepts/blob/master/README.md 简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 目录 调用堆栈 原始类型 值类型和引用类型 隐式, 显式, 名义和鸭子类型 == 与 ===, typeof

学习前端这门手艺,栈底到栈顶依次是:浏览器架构、Web 网络、事件循环机制、JavaScript 核心、V8 的内存管理、浏览器的渲染流程、Web 安全、CSS、React、Vue、Node、构建工具链等 927

月薪2万+的网络工程师,到底藏着哪些“绝活”?

在IT圈,网络工程师是个既神秘又硬核的职业。月薪2万+的网工,早已不是只会拉网线、改IP的“IT民工”,而是掌握了一身“绝技”的技术大牛。他们能让企业网络如丝般顺滑,面对宕机临危不乱,还能用自动化脚本批量搞定上百台设备。想知道这些高薪网工的秘密武器是什么?今天,我就以一个老网工的视角,结合自己和同行们的实战经验,扒一扒那些月薪2万+的网络工程师都身怀哪些绝技。如果你也想挤进高薪行列,不妨参考参考!

网络技术联盟站 359

每个开发者都应该知道的33个JavaScript概念

作者:Ahmad Shadeed 译者:前端小智 来源:dev 有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 首先,问大家一个问题,你对 JS 的熟练程度有多深? 今天,我们来介绍一下 JS 中的33个概念,这些概念中,你可能知道,也有可能不知道,甚至连听都没听过。 这些概念是作为前端都应该需要知道的,那我们开始吧。 .

粉丝们务必加入微信粉丝群 2658

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

33-js-concepts:掌握JavaScript核心概念的全面指南

33-js-concepts:掌握JavaScript核心概念的全面指南 JavaScript作为最受欢迎的编程语言之一,其功能性和灵活性让无数开发者趋之若鹜。然而,要想真正精通JavaScript,理解其背后的核心概念至关重要。今天,我们将为您介绍一个开源项目——33-js-concepts,它集合了JavaScript开发者必须掌握的33个核心概念,是提升JavaScript技能的绝佳资源。 ...

gitblog_00018的博客 820

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

33-js-concepts:帮助您掌握JavaScript开发必备的33个核心概念

33-js-concepts:帮助您掌握JavaScript开发必备的33个核心概念 在当今的Web开发领域,JavaScript已经成为了不可或缺的技术。它不仅能够实现网页的动态交互,还能够驱动复杂的前端和后端应用程序。然而,JavaScript的学习之路并不平坦,许多开发者在面对其复杂的特性时感到困惑。为了帮助开发者们更好地理解和掌握JavaScript,开源项目“33-js-concepts...

gitblog_00315的博客 500

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

33-js-concepts:助力开发者掌握JavaScript核心概念

33-js-concepts:助力开发者掌握JavaScript核心概念 项目介绍 在现代Web开发中,JavaScript是一种不可或缺的编程语言。然而,JavaScript的深度和复杂性往往让初学者望而却步。33-js-concepts项目旨在帮助JavaScript开发者深入理解语言的核心概念,从而提升编程能力和代码质量。这个项目整理了33个JavaScript核心概念,涵盖了从基础到高级的...

gitblog_00043的博客 518

每个JavaScript开发人员应该知道的33个概念

每个JavaScript开发人员应该知道的33个概念 介绍 创建此存储库的目的是帮助开发人员在JavaScript中掌握他们的概念。这不是一项要求,而是未来研究的指南。它基于Stephen Curtis撰写的文章,你可以在这里阅读。 社区 随意提交PR添加链接到您...

911

JavaScript的33个概念

这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。本篇文章是参照 @leonardomso 创立,英文版项目地址在这里。由于原版资源都要翻墙,所以本人创立一个中文版,附上关于这些概念在国内的一些文章和视频。若有觉得更好的文章或者视频,可以贡献出来,觉得有误的,请联系我删除。

weixin_38235121的博客 1449

33个JavaScript概念在TensorFlow.js机器学习中的应用实战指南

你是否曾经想过,用前端开发者最熟悉的JavaScript语言也能构建强大的机器学习应用?随着TensorFlow.js的诞生,这个梦想已经成为现实。本文将带你深入探索如何将33个核心JavaScript概念巧妙应用于TensorFlow.js机器学习项目中,从前端到后端,从基础到高级,全方位提升你的AI开发技能。 通过本文,你将掌握: - ✅ JavaScript核心概念在机器学习场景下的实际应...

gitblog_00399的博客 1148

JavaScript 开发者应懂的 33 个概念

JavaScript开发者应懂的33个概念 Fundebug 一行代码搞定BUG监控:www.fundebug.com ​关注她 356 人赞同了该文章 摘要:基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fu...

jiaojsun的博客 851

JavaScript 33个概念教程

JavaScript 33个概念教程 项目介绍 33-js-concepts 是一个旨在帮助开发者掌握 JavaScript 核心概念的开源项目。该项目由 @stephentian 创建,基于 @leonardomso 的英文版项目。它包含了33个 JavaScript 开发者应该理解的概念,从基础到高级,涵盖了函数式编程、原型链、异步编程等多个方面。 项目快速启动 克隆项目 首先,克隆项目到本地...

gitblog_00074的博客 386

【亲测免费】 33-js-concepts:全面掌握JavaScript核心概念

33-js-concepts:全面掌握JavaScript核心概念 项目介绍 "33-js-concepts"是一个开源项目,旨在帮助JavaScript开发者深入理解并掌握JavaScript语言的核心概念。这个项目基于Stephen Curtis的文章,并由GitHub列为2018年顶级开源项目之一。它详细介绍了开发者必须了解的33个JavaScript关键概念,从基本的数...

gitblog_00060的博客 1053

探索 JavaScript 的精髓:33 个核心概念解析

探索 JavaScript 的精髓:33 个核心概念解析 在编程世界中,深入理解一门语言的核心概念是至关重要的。 是一个由开发者 Stephen Tian 创建的 GitHub 项目,旨在帮助 JavaScript 开发者深化对这门语言的理解。在这个仓库中,他详细讲解了 33 个关键的 JavaScript 概念,涵盖了从基础语法到高级特性的全貌。 项目概述 此项目组织得清晰明了,将 33 个概念...

gitblog_00100的博客 529

【转】JavaScript开发者应懂的33个概念

JavaScript开发者应懂的33个概念 简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardomso 创立,英文版项目地址在这里。 由于原版资源都要翻墙,所以本人创立一个中文版,附上关于这些概念在国内的一些文章和视频。 若有觉得更好的文章或者视频,可以贡献出来,觉得有误的,请联系我删除。 更新 若有觉得更好的文章或者视频,可以贡献出来,觉得...

huoren_no1的博客 1876

33-js-concepts完整指南:掌握JavaScript开发必备的33个核心概念

🚀 **终极JavaScript学习指南**:作为一名JavaScript开发者,你是否曾感到困惑于众多复杂的概念?33-js-concepts项目为你提供了一份完整的JavaScript核心概念学习路线图,涵盖了从基础到高级的所有必备知识。这个开源项目整理了**JavaScript开发**中最重要的33个核心概念,是每位前端开发者都应该掌握的知识体系。 ## 📚 为什么你需要学习这33个J

gitblog_01141的博客 1101
上一篇: 关于前端修罗场
下一篇: NodeJS V18稳定版本正式发布,这个特性太棒了
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值