自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2699)
  • 收藏
  • 关注

原创 香橙派(Orange Pi)AIpro开发板与YOLOv5实践测试

香橙派,也称Orange Pi,是一款类似于树莓派(Raspberry Pi)的单板计算机,旨在为开发者和爱好者提供一个低成本、高性能、低功耗的嵌入式开发平台,与树莓派相比,香橙派在很多方面具有更高的性能和更多的扩展接口,但在社区和资源方面可能相对较小,不过,官方有大量的文档可以进行学习。香橙派的应用场景广泛,包括但不限于家庭媒体中心、自动化控制、物联网、教育等领域。它通常用于DIY项目,如智能家居、机器人、游戏机等,也被用作学习和教学工具,帮助人们学习计算机科学和电子工程知识。

2024-07-19 11:26:18 1579

原创 javascript七基础学习系列二千零四十八:手势事件

一个手指放到屏幕上时,gesturestart 事件会首先触发,然后紧接着触发这个手指的touchstart。如果两个手指或其中一个手指移动,则会触发gesturechange 事件。与触摸事件类似,每个手势事件的event 对象都包含所有标准的鼠标事件属性:bubbles、与触摸事件的例子一样,以上代码简单地将每个事件对应到一个处理函数,然后输出每个事件的信息。只有在两个手指同时接触事件接收者时,这些事件才会触发。幕,就会触发gestureend 事件,紧接着触发该手指的touchend 事件。

2024-07-15 12:53:41 402

原创 javascript七基础学习系列二千零四十七:devicemotion 事件

 accelerationIncludingGravity:对象,包含x、y 和z 属性,反映各个维度的加速信息, interval:毫秒,距离下次触发devicemotion 事件的时间。 acceleration:对象,包含x、y 和z 属性,反映不考虑重力情况下各个维度的加速信息。本节介绍的事件只适用于触屏设备。 rotationRate:对象,包含alpha、beta 和gamma 属性,表示设备朝向。当devicemotion 事件触发时,event 对象中包含如下额外的属性。

2024-07-15 12:53:04 578

原创 javascript七基础学习系列二千零四十六:sessionStorage 对象

因为sessionStorage 对象是Storage 的实例,所以可以通过使用setItem()方法或直接给属。对于少量数据,这里的差别可以忽略不计,但对于大量数据,就可以注意到IE 中JavaScript 恢复执行的。sessionStorage 对象只存储会话数据,这意味着数据只会存储到浏览器关闭。sessionStorage 对象中的数据只能由最初存储数据的页面使用,在多页应用程序中的用处有限。老版IE 以异步方式实现了数据写入,因此给数据赋值的时间和数据写入磁盘的时间可能存在延迟。

2024-07-15 12:52:24 400

原创 javascript七基础学习系列二千零四十五:通信错误

如,在个性化的主页上,比如Gmail,可能包含多个相互独立的功能模块。随着Ajax 编程的出现,Web 应用程序在运行期间动态加载数据和功能成为常见的情形。如果在某个条件下,环聊功能不工作了,就不能算重大错误,因为这不是应用程序。一个模块的init()方法出错,数组中其后的所有模块都不会被初始化。好的代码设计意味着应用程序某个部分的错误不会影响其他部分,实际上根本不应该相关。表面上看,这段代码没什么问题,就是依次调用每个模块的init()方法。逻辑上,这样写代码是不合适的,因为每个模块相互独立,各自功能。

2024-07-15 12:51:51 70

原创 javascript七基础学习系列二千零四十:识别错误

分析器会比较注解和JavaScript 代码的各个部分,对在实际运行时可能出现的潜。同样,对于1 和true 的比较也类似。不得不说的是,通过在代码构建流程中添加静态代码分析或代码检查器(linter),可以预先发现非。类型的,不会验证函数参数,所以很多错误只有在代码真正运行起来时才会出现。在这个重写的版本中,if 语句的条件会基于比较操作返回布尔值。类型转换错误的主要原因是使用了会自动改变某个值的数据类型的操作符或语言构造。假如第三个参数是数值0,if 条件判断就会失败,而数值1 则会导致满足条件。

2024-07-15 12:51:19 385

原创 javascript七基础学习系列二千零三十九:错误类型

Error 是基类型,其他错误类型继承该类型。因此,所有错误类型都共享相同的属性(所有错误对象上的方法都是这个默认类型定义的方法)。EvalError 类型的错误会在使用eval()函数发生异常时抛出。最后一种错误类型是URIError,只会在使用encodeURI()或decodeURI()但传入了格式错误的。TypeError 在JavaScript 中很常见,主要发生在变量不是预期类型,或者访问不存在的方法时。这个类型并不是代码中通常要处理的错误,如果真发生了这种错误,很可能代码哪里弄错。

2024-07-15 12:50:49 365

原创 javascript七基础学习系列二千零三十八:try/catch 语句

ECMA-262 也指定了定义错误类型的name 属性,目前所有浏览器中都有这个属性。Chrome 和Opera 中都有的属性,尽管每个浏览器添加了其他属性。如果出错并执行catch 块中的代码,则finally 块中的代码仍执行。因为它在try 块中,不会导致错误。但是,finally 块的存在导致try 块中的return 语句被忽略。如果try 块中有代码发生错误,代码会立即退出执行,并跳到catch 块中。finally 子句,catch 块就成了可选的(它们两者中只有一个是必需的)。

2024-07-15 12:50:11 219

原创 javascript七基础学习系列二千零三十七:错误处理与调试

作步骤,比如Chrome 的操作步骤参见Google Developers 网站的文章《Android 设备的远程调试入门》,如前所述,当网页中的JavaScript 脚本发生错误时,不同浏览器的处理方式不同。JavaScript 一直以来被认为是最难调试的编程语言之一,因为它是动态的,且多年来没有适当的开。在前面提到的所有浏览器中,访问开发者工具的路径是相似的。然后,就可以在对应的桌面浏览器中查看错误了。多数上网的人没有技术背景,甚至连什么是浏览器都不十分清楚,而且有的人不知道自己使用的是什么。

2024-07-15 12:49:36 230

原创 javascript七基础学习系列二千零三十六:使用对称密钥加密和解密

SubtleCrypto 对象支持使用公钥和对称算法加密和解密消息。 postMessage() API 支持从不同源跨文档发送消息,同时保证安全和遵循同源策略。 Encoding API 用于实现字符串与缓冲区之间的无缝转换(越来越常见的操作)。加密消息需要传入参数对象以指定算法和必要的值、加密密钥和要加密的数据。 媒体元素和拥有自己的API,用于操作音频和视频。 File API 提供了发送、接收和读取大型二进制对象的可靠工具。 Streams API 支持以全新的方式读取、写入和处理数据。

2024-07-15 12:49:03 430

原创 javascript七基础学习系列二千零三十五:异步依赖

因为JavaScript 可以异步执行,所以如果能按需加载就好了。换句话说,可以让JavaScript 通知模块。模块A 的代码使用了moduleB 标识符向模块系统请求加载模块B,并以模块B 作为参数调用回调。系统在必要时加载新模块,并在模块加载完成后提供回调。模块B 可能已加载完成,也可能必须重新请求和初始化,但这里的代码并不关心。如果重写前面的应用程序,只使用动态模块加载,那么使用一个。// 在模块A 里面。

2024-07-15 12:48:25 95

原创 javascript七基础学习系列二千零三十四:模 块

的,因为JavaScript 是顺序执行的,并且是单线程的,所以代码必须有执行的起点。赖其他模块,其他模块同样可能有自己的依赖。在ECMAScript 6 模块规范出现之前,虽然浏览器原生不支持模块的行为,但迫切需要这样的行为。因为JavaScript 是异步加载的解释型语言,所以得到广泛应用的各种模块实现也表现出不同的形态。管怎样,完善的模块系统一定不会存在模块标识冲突的问题,且系统中的任何模块都应该能够无歧义地。文件的路径,但在某些模块系统中,这个标识符也可以是在模块本身内部声明的命名空间路径字符串。

2024-07-14 20:52:02 245

原创 javascript七基础学习系列二千零三十三:并发问题

如果两个不同的浏览器标签页同时打开了同一个网页,则有可能出现一个网页尝试升级数据库而另一个尚未就绪的情形。不同的是,IndexedDB 存储的是对象,而。其次,每个源都有可以存储的空间限制。当前Firefox 的限制是每个源50MB,而Chrome 是5MB。有了这些存储手段,就可以在客户端通过使用JavaScript 存储可观的数据。打开到新版本时,将执行此回调。保存浏览器一次会话期间的数据,因为数据会在浏览器关闭时被删除。数据库为新版本,而版本变化只能在浏览器只有一个标签页使用数据库时才能完成。

2024-07-14 20:51:29 255

原创 javascript七基础学习系列二千零三十二:设置游标方向

在使用"prev"或"prevunique"打开游标时,每次调用continue()或advance()都会在对象存。openCursor()方法实际上可以接收两个参数,第一个是IDBKeyRange 的实例,第二个是表示方。通常,游标都是从对象存储的第一条记录开始,每次调用continue()或advance()都。注意,openCursor()的第一个参数是null,表示默认的键范围是所有值。createIndex()的第一个参数是索引的名称,第二个参数是索引属性的名称,第三个参数是包含。

2024-07-14 20:50:01 291

原创 javascript七基础学习系列二千零三十一:通过游标查询

记录,这个属性中保存着IDBCursor 的实例(有下一条记录时)或null(没有记录时)。记录时,onsuccess 事件处理程序最后一次被调用,此时event.target.result 等于null。这两个方法都会让游标重用相同的请求,因此也会重用onsuccess 和onerror 处理程序,直至不。update()方法使用指定的对象更新当前游标对应的值。要创建另一个请求,必须调用下列中的一个方法。如果事务没有修改对象存储的权限,update()和delete()都会抛出错误。

2024-07-14 20:49:25 369

原创 javascript七基础学习系列二千零二十九:事务

然后,可以使用add()和put()方法添加和更新对象,使用get()取得对象,使用delete()删除对象,其中,get()和delete()方法都接收对象键作为参数,这5 个方法都创。种情况下,add()会导致错误,而put()会简单地重写该对象。有了事务的引用,就可以使用objectStore()方法并传入对象存储的名称以访问特定的对象存储。拿到了对象存储的引用后,就可以使用add()或put()写入数据了。即要存储的对象,并把对象保存到对象存储。这两个方法只在对象存储中已存在同名的键时有区别。

2024-07-14 20:48:49 345

原创 javascript七基础学习系列二千零二十七:localStorage 对象

要了解关于Web Storage 限制的更多信息,可以参考dev-test.nemikor 网站的“Web Storage Support。在修订的HTML5 规范里,localStorage 对象取代了globalStorage,作为在客户端持久存储。不同浏览器给localStorage 和sessionStorage 设置了不同的空间限制,但大多数会限制为每。因为localStorage 是Storage 的实例,所以可以像使用sessionStorage 一样使用。具体的限制取决于特定的浏览器。

2024-07-14 20:48:07 261

原创 javascript七基础学习系列二千零二十六:sessionStorage 对象

因为sessionStorage 对象是Storage 的实例,所以可以通过使用setItem()方法或直接给属。对于少量数据,这里的差别可以忽略不计,但对于大量数据,就可以注意到IE 中JavaScript 恢复执行的。sessionStorage 对象只存储会话数据,这意味着数据只会存储到浏览器关闭。sessionStorage 对象中的数据只能由最初存储数据的页面使用,在多页应用程序中的用处有限。老版IE 以异步方式实现了数据写入,因此给数据赋值的时间和数据写入磁盘的时间可能存在延迟。

2024-07-14 20:46:09 309

原创 javascript七基础学习系列二千零二十五:通信错误

如,在个性化的主页上,比如Gmail,可能包含多个相互独立的功能模块。随着Ajax 编程的出现,Web 应用程序在运行期间动态加载数据和功能成为常见的情形。如果在某个条件下,环聊功能不工作了,就不能算重大错误,因为这不是应用程序。一个模块的init()方法出错,数组中其后的所有模块都不会被初始化。好的代码设计意味着应用程序某个部分的错误不会影响其他部分,实际上根本不应该相关。表面上看,这段代码没什么问题,就是依次调用每个模块的init()方法。逻辑上,这样写代码是不合适的,因为每个模块相互独立,各自功能。

2024-07-14 20:43:19 73

原创 javascript七基础学习系列二千零二十四:数据类型错误

reverseSort()函数可以使用数组的sort()和reverse()方法,将数组反向排序。最后一个reverseSort()是安全的,它测试了values 参数是不是Array 的实例。法,但参数本身不是数组,那么在执行reverse()时也会报告错误。的用法,不一定要检查每个参数的数据类型,但对外的任何API 都应该做类型检查以保证正确执行。在前面的例子中,代码检查了第三个参数的数据类型,以确保它是字符串,但根本没有检查另外两。在这个重写的版本中,第一步检查了传入的值确实是字符串。

2024-07-14 20:42:49 205

原创 javascript七基础学习系列二千零二十三:识别错误

分析器会比较注解和JavaScript 代码的各个部分,对在实际运行时可能出现的潜。同样,对于1 和true 的比较也类似。不得不说的是,通过在代码构建流程中添加静态代码分析或代码检查器(linter),可以预先发现非。类型的,不会验证函数参数,所以很多错误只有在代码真正运行起来时才会出现。在这个重写的版本中,if 语句的条件会基于比较操作返回布尔值。类型转换错误的主要原因是使用了会自动改变某个值的数据类型的操作符或语言构造。假如第三个参数是数值0,if 条件判断就会失败,而数值1 则会导致满足条件。

2024-07-14 20:42:07 270

原创 javascript七基础学习系列二千零二十二:error 事件

况下,只有错误消息有用,因为URL 就是当前文档的地址,而行号可能指嵌入JavaScript 或外部文件中的。相反,会传入3 个参数:错误消息、发生错误的URL 和行号。会触发error 事件。早期支持的事件,为保持向后兼容,很多浏览器保持了其格式不变。通过返回false,这个函数实际上就变成了整个文档的try/catch 语句,可以捕获所有未处理的。然后,浏览器的默认行为就会生效,像往常一样显示这条错误消息。在任何错误发生时,无论是否是浏览器生成的,都会触发error 事件并执行这个事件处理程序。

2024-07-13 16:23:14 303

原创 javascript七基础学习系列二千零二十一:何时抛出错误

但是,如果是一个复杂的Web 应用程序,有几千行JavaScript 代码,想要找到错误的原因就会很难。在编写一个可能用于很多应用程序的JavaScript 库,或者一个会在应用程序的很多地方用到的实用函数,对于上面的一个函数来说,通过这样的错误消息调试还是很容易的。在这个重写后的函数中,如果values 参数不是数组就会抛出错误。架构的底层抛出,在这个层面上,人们对正在进行的流程知之甚少,因此无法真正地处理错误。至于抛出错误与捕获错误的区别,可以这样想:应该只在确切知道接下来该做什么的时候捕获错。

2024-07-13 16:22:40 369

原创 javascript七基础学习系列二千零二十:模块行为

浏览器运行时在知道应该把某个文件当成模块时,会有条件地按照上述ECMAScript 6 模块行为来施。 模块顶级this 的值是undefined(常规脚本中是window)。 模块可以定义公共接口,其他模块可以基于这个公共接口观察和交互。 模块中的var 声明不会添加到window 对象。 ES6 模块默认在严格模式下执行。 ES6 模块不共享全局命名空间。 ES6 模块是异步加载和执行的。 模块可以请求加载其他模块。 模块代码只在加载后执行。 模块只能加载一次。

2024-07-13 16:22:09 57

原创 javascript七基础学习系列二千零一十九:使用ES6 模块

即使与常规JavaScript 文件处理方式不同,JavaScript 模块文件也没有专门的内容类型。ECMAScript 6 模块的独特之处在于,既可以通过浏览器原生加载,也可以与第三方加载器和构建工。完全支持ECMAScript 6 模块的浏览器可以从顶级模块加载整个依赖图,且是异步完成的。会解析入口模块,确定依赖,并发送对依赖模块的请求。们的内容,确定它们的依赖,如果这些二级依赖还没有加载,则会发送更多请求。模块文件按需加载,且后续模块的请求会因为每个依。解析完依赖图,应用程序就可以正式加载模块了。

2024-07-13 16:21:21 272

原创 javascript七基础学习系列二千零一十八:异步模块定义

包装模块的函数是全局define 的参数,它是由AMD 加载器库的实现定义的。CommonJS 以服务器端为目标环境,能够一次性把所有模块都加载到内存,而异步模块定义(AMD,AMD 的一般策略是让模块声明自己的依赖,而运行在浏览器中的模块系统会按需获取依赖,并。AMD 模块可以使用字符串标识符指定自己的依赖,而AMD 加载器会在所有依赖模块加载完毕后。立即调用模块工厂函数。AMD 模块实现的核心是用函数包装模块定义。包装函数也便于模块代码的移植,因为包装函数内部的所有模块代码使用的都是原生。

2024-07-13 16:20:47 395

原创 javascript七基础学习系列二千零一十七:使用ES6 之前的模块加载器

Node.js 中可以使用绝对或相对路径,也可以使用安装在node_modules 目录中依赖的模块标识符。在上面的例子中,模块系统是Node.js 实现的,因此./moduleB 是相对路径,指向与当前模块位于。在ES6 原生支持模块之前,使用模块的JavaScript 代码本质上是希望使用默认没有的语言特性。们并不关心这些细节,重要的是知道在不同的CommonJS 实现中模块字符串引用的含义可能不同。所有CommonJS 风格的实现共同之处是模块不会指定自己的标识符,它们的标识符由其在模块文件层级。

2024-07-13 16:20:16 280

原创 javascript七基础学习系列二千零一十六:凑合的模块系统

(IIFE,Immediately Invoked Function Expression)将模块定义封装在匿名闭包中。类似地,还有一种模式叫作“泄露模块模式”(revealing module pattern)。的例子除了使用恶意的eval 之外并没有其他更好的动态加载依赖的方法。为按照模块模式提供必要的封装,ES6 之前的模块有时候会使用函数作用域和立即调用函数表达式。当然,自己动手写模块系统确实非常有意思,但实际开发中并不建议这么做,因为不够可靠。// 私有Foo 模块的代码。

2024-07-13 16:19:40 231

原创 javascript七基础学习系列二千零一十五:异步依赖

因为JavaScript 可以异步执行,所以如果能按需加载就好了。换句话说,可以让JavaScript 通知模块。模块A 的代码使用了moduleB 标识符向模块系统请求加载模块B,并以模块B 作为参数调用回调。系统在必要时加载新模块,并在模块加载完成后提供回调。模块B 可能已加载完成,也可能必须重新请求和初始化,但这里的代码并不关心。如果重写前面的应用程序,只使用动态模块加载,那么使用一个。// 在模块A 里面。

2024-07-13 16:19:03 255

原创 javascript七基础学习系列二千零一十四:模 块

的,因为JavaScript 是顺序执行的,并且是单线程的,所以代码必须有执行的起点。赖其他模块,其他模块同样可能有自己的依赖。在ECMAScript 6 模块规范出现之前,虽然浏览器原生不支持模块的行为,但迫切需要这样的行为。因为JavaScript 是异步加载的解释型语言,所以得到广泛应用的各种模块实现也表现出不同的形态。管怎样,完善的模块系统一定不会存在模块标识冲突的问题,且系统中的任何模块都应该能够无歧义地。文件的路径,但在某些模块系统中,这个标识符也可以是在模块本身内部声明的命名空间路径字符串。

2024-07-13 16:18:27 405

原创 javascript七基础学习系列二千零一十三:并发问题

如果两个不同的浏览器标签页同时打开了同一个网页,则有可能出现一个网页尝试升级数据库而另一个尚未就绪的情形。不同的是,IndexedDB 存储的是对象,而。其次,每个源都有可以存储的空间限制。当前Firefox 的限制是每个源50MB,而Chrome 是5MB。有了这些存储手段,就可以在客户端通过使用JavaScript 存储可观的数据。打开到新版本时,将执行此回调。保存浏览器一次会话期间的数据,因为数据会在浏览器关闭时被删除。数据库为新版本,而版本变化只能在浏览器只有一个标签页使用数据库时才能完成。

2024-07-13 16:17:57 139

原创 javascript七基础学习系列二千零一十二:设置游标方向

在使用"prev"或"prevunique"打开游标时,每次调用continue()或advance()都会在对象存。openCursor()方法实际上可以接收两个参数,第一个是IDBKeyRange 的实例,第二个是表示方。通常,游标都是从对象存储的第一条记录开始,每次调用continue()或advance()都。注意,openCursor()的第一个参数是null,表示默认的键范围是所有值。createIndex()的第一个参数是索引的名称,第二个参数是索引属性的名称,第三个参数是包含。

2024-07-12 15:20:21 299

原创 javascript七基础学习系列二千零一十一:键范围

这个例子只会输出从键为"007"的记录开始到键为"ace"的记录结束的对象,比上一节的例子要少。这个方法接收四个参数:下限的键、上限的键、这个范围保证只获取键为"007"的值。// 从"007"的下一条记录开始,到"ace"的前一条记录停止。// 从"007"的下一条记录开始,到"ace"记录停止。// 从"007"记录开始,到"ace"的前一条记录停止。// 从"007"记录开始,到"ace"记录停止。// 从"007"的下一条记录开始,直到最后。// 从头开始,到"ace"的前一条记录为止。

2024-07-12 15:19:51 400

原创 javascript七基础学习系列二千零一十:通过游标查询

记录,这个属性中保存着IDBCursor 的实例(有下一条记录时)或null(没有记录时)。记录时,onsuccess 事件处理程序最后一次被调用,此时event.target.result 等于null。这两个方法都会让游标重用相同的请求,因此也会重用onsuccess 和onerror 处理程序,直至不。update()方法使用指定的对象更新当前游标对应的值。要创建另一个请求,必须调用下列中的一个方法。如果事务没有修改对象存储的权限,update()和delete()都会抛出错误。

2024-07-12 15:19:16 386

原创 javascript七基础学习系列二千零九:事务

然后,可以使用add()和put()方法添加和更新对象,使用get()取得对象,使用delete()删除对象,其中,get()和delete()方法都接收对象键作为参数,这5 个方法都创。种情况下,add()会导致错误,而put()会简单地重写该对象。有了事务的引用,就可以使用objectStore()方法并传入对象存储的名称以访问特定的对象存储。拿到了对象存储的引用后,就可以使用add()或put()写入数据了。即要存储的对象,并把对象保存到对象存储。这两个方法只在对象存储中已存在同名的键时有区别。

2024-07-12 15:18:43 332

原创 javascript七基础学习系列二千零八:IndexedDB

使用IndexedDB 数据库的第一步是调用indexedDB.open()方法,并给它传入一个要打开的数据。不存在,open()操作会创建一个新数据库,然后触发upgradeneeded 事件。IndexedDB 的设计几乎完全是异步的。为此,大多数操作以请求的形式执行,这些请求会异步执行,开数据库期间发生错误,event.target.errorCode 中就会存储表示问题的错误码。如果给定名称的数据库已存在,则会发送一个打开它的请求;如果数据库存在,而你指定了一个升级版的版本号,则会立。

2024-07-12 15:18:06 315

原创 javascript七基础学习系列二千零七:localStorage 对象

要了解关于Web Storage 限制的更多信息,可以参考dev-test.nemikor 网站的“Web Storage Support。在修订的HTML5 规范里,localStorage 对象取代了globalStorage,作为在客户端持久存储。不同浏览器给localStorage 和sessionStorage 设置了不同的空间限制,但大多数会限制为每。因为localStorage 是Storage 的实例,所以可以像使用sessionStorage 一样使用。具体的限制取决于特定的浏览器。

2024-07-12 15:17:27 245

原创 javascript七基础学习系列二千零六:sessionStorage 对象

因为sessionStorage 对象是Storage 的实例,所以可以通过使用setItem()方法或直接给属。对于少量数据,这里的差别可以忽略不计,但对于大量数据,就可以注意到IE 中JavaScript 恢复执行的。sessionStorage 对象只存储会话数据,这意味着数据只会存储到浏览器关闭。sessionStorage 对象中的数据只能由最初存储数据的页面使用,在多页应用程序中的用处有限。老版IE 以异步方式实现了数据写入,因此给数据赋值的时间和数据写入磁盘的时间可能存在延迟。

2024-07-12 15:16:53 340

原创 javascript七基础学习系列二千零五:通信错误

如,在个性化的主页上,比如Gmail,可能包含多个相互独立的功能模块。随着Ajax 编程的出现,Web 应用程序在运行期间动态加载数据和功能成为常见的情形。如果在某个条件下,环聊功能不工作了,就不能算重大错误,因为这不是应用程序。一个模块的init()方法出错,数组中其后的所有模块都不会被初始化。好的代码设计意味着应用程序某个部分的错误不会影响其他部分,实际上根本不应该相关。表面上看,这段代码没什么问题,就是依次调用每个模块的init()方法。逻辑上,这样写代码是不合适的,因为每个模块相互独立,各自功能。

2024-07-12 15:16:22 52

原创 javascript七基础学习系列二千零四:数据类型错误

reverseSort()函数可以使用数组的sort()和reverse()方法,将数组反向排序。最后一个reverseSort()是安全的,它测试了values 参数是不是Array 的实例。法,但参数本身不是数组,那么在执行reverse()时也会报告错误。的用法,不一定要检查每个参数的数据类型,但对外的任何API 都应该做类型检查以保证正确执行。在前面的例子中,代码检查了第三个参数的数据类型,以确保它是字符串,但根本没有检查另外两。在这个重写的版本中,第一步检查了传入的值确实是字符串。

2024-07-12 15:15:42 330

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除