在 JavaScript 中,parseFloat() 函数如果传入空值(如 null、undefined 或空字符串 "")不会报错,但会返回 NaN(Not a Number)。
如下js代码,其中addEventListener,被多次监听click事件,ajaxSend被多次执行,我们只需要在ajaxSend后加上event.stopImmediatePropagation(),就不会被多次监听发送了
Documentation
Visit https://clappr.github.io to view the full documentation.
语法
.表示除\n之外的任意字符
+匹配前面的子表达式一次或多次。
(?<=exp)是以exp开头的字符串, 但不包含本身。
(?=exp)就匹配为exp结尾的字符串, 但不包含本身。
注:语句外面的括号不可省略
g匹配全局
一般情况下,我们在项目中进行代码调试时,往往只会在逻辑中使用console.log进行控制台打印调试。
这种方式虽然比较常规直接,但是如果打印数据多了,就会导致你的控制台消息变得异常混乱。
所以,我们有了更好的选择,那就是console对象提供的其它API,来让我们能够更清晰的区分打印信息。
HTTP协议的特性:属于“请求-响应”模型,只有客户端发起了请求消息,服务器才能给出响应消息,没有请求,就没有响应;一个请求消息,服务器只能返回一个响应消息。有些特殊应用场景中,如“在线股票”、“聊天室”等,需要模拟呈现出“客户端不发请求,服务器也在不停的给出响应”效果,若使用HTTP协议,只能使用“AJAX+定时器”来近似的实现——心跳请求,问题:心跳过慢则信息的实效性差,心跳过快则服务器压力太大!
WebSocket协议的特性:属于“广播-收听”模型,只要客户端连接到服务器上,就不再断开(永久连接),一方可以不停的给对方发消息,对方可以不给出响应。使用WS协议代替心跳请求,可以非常好的解决HTTP协议在某些应用中的不足。WS协议的服务器也有不足:永久连接限制了客户端的数量。
JavaScript是一种广泛应用于前端Web页面开发的脚本语言。在Web开发中,我们通常需要将数据以XML格式发送到服务器,或从服务器接收XML数据并解析。在这样的情况下,将JavaScript字符串转换为XML格式是非常重要的。
简介
Web Worker (工作线程) 是 HTML5 中提出的概念,分为两种类型,专用线程(Dedicated Web Worker) 和共享线程(Shared Web Worker)。专用线程仅能被创建它的脚本所使用(一个专用线程对应一个主线程),而共享线程能够在不同的脚本中使用(一个共享线程对应多个主线程)。
专用线程可以看做是默认情况的 Web Worker,其加上修饰词的目的是为了与共享线程进行区分。本文会较为严格地区分两者,可能较为累赘,但个人认为这是必要的。如果单纯以 Web Worker 字样出现的地方指的是两者都会有的情况。
定时器为什么不可靠
在事件循环执行机制中,异步事件会把回调函数放入消息队列中,主线程的宏任务执行完毕后,依次执行消息队列中的微任务,等微任务执行完了再循环回来执行宏任务。由于消息队列中存在大量的任务,其他任务的执行时间就会造成定时器回调函数的延迟,如果不处理,就会一直叠加延迟,当运行时间久了之后,相差就会很大。
因此定时器是不能完全保证的。
问题:setTimeout在某一次写一个倒计时功能时,当浏览器缩小或者离开当前页面,倒计时会不准确,进入休眠模式,执行间隔比预期要慢。
设定一个 150ms 后执行的定时器不代表到了 150ms 代码就立刻执行,它表示代码会在 150ms 后被加入到队列中。如果在这个时间点上,队列中没有其他东西,那么这段代码就会被执行。
手机锁屏以及退出后台webscoket会断开:js在手机熄屏后会中断,在唤醒之后js会继续执行。所以设置在js中的定时发送心跳包的功能在手机熄屏后就没法执行了。熄屏时间过长,这个时候链接就会被服务端强制断开,并且大部分手机在熄屏时,websocket连接就已经断开了。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
需要引入jquery.js和库clipboard.min.js