使用非函数式的方式计算数组中元素的平均值和标准差
使用函数式的编程方式
同步异步单线程是JavaScript语言的一大特点 , 也就是在同一时间只能做一件事 。所谓同步 , 原意就是程序的执行顺序与书写顺寻保持一致;而异步 , 指的是程序并非按照书写的顺序来执行 , 会存在“跳过”执行的现象 。
谈及JS异步 , 就不得不提两个改变执行顺序的基础函数:setTimeout和setInterval函数 。这两个函数在执行时会被压入事件循环队列当中 , 在当前作用域下的所有程序都执行完成后 , 才会开始执行排列在事件循环队列当中的函数 , 所以这两个函数能够改变程序的执行顺序 。来看例子:
JS正则表达式正则表达式大家应该不会陌生 , JavaScript中的正则表达式用RegExp类的实例对象来表示 , 可以使用RegExp()构造函数来创建 , 也可以用直接量表达式来创建 。它的主要功能是用来描述或匹配一段符合某个语法规则的字符串 , 多用于在一段较长的文本中检索或替换那些符合模式的字符串内容 , 也经常用于用户的输入校验 。例如 , 使用如下代码来解析一个URL:
事件模型JavaScript的事件模型 , 是所有前端研发工程师必须必须必须弄清楚的一个基础核心概念!下面为了能让读者迅速回忆起这部分相关的理论知识 , 笔者将以关键词的形式进行阐述 。
DOM事件流:当用户触发事件时 , 该事件首先会从最顶层的document对象开始 , 自顶向下沿着DOM树的结构逐层传播 , 直到触发事件的DOM节点对象 。之后会从触发事件的DOM节点对象开始 , 自底向上逐层传播 , 最后返回到最顶层document对象为止 。这就是整个事件流传播的过程 。
事件捕获:从最顶层的document对象开始 , 自顶向下沿着DOM树的结构逐层传播 , 直到触发事件的DOM节点对象的过程 。
事件冒泡:从触发事件的DOM节点对象开始 , 自底向上逐层传播 , 最后到达最顶层的document对象的过程 。
阻止事件流传播:既可以阻止事件捕获阶段的传播 , 也可以阻止事件冒泡阶段的传播 。在支持addEventListener()方法的浏览器中 , 调用事件对象的stopPropagation()方法阻止事件传播 。在IE9之前 , 设置事件对象的cancelBubble属性为true来实现阻止事件进一步传播 。
阻止事件的默认行为:在支持addEventListener()的浏览器中 , 调用事件对象的preventDefault()方法取消事件的默认操作 。在IE9之前 , 设置事件对象的returnValue属性为false来阻止事件的默认行为 。
事件委托/事件代理:利用事件冒泡的原理 , 将事件加到目标节点的父级节点上 , 触发执行效果 。好处就是:(1)可以减少事件绑定的次数 , 利于提高性能 。(2)新添加的元素还会有之前的事件 。
Ajax、跨域访问Ajax是浏览器专门用来和服务器进行交互的异步通讯技术 , 其核心对象是XMLHttpRequest , 通过该对象可以创建一个Ajax请求 。为了防止XSS攻击 , 浏览器对Ajax做了限制 , 不允许Ajax跨域请求服务器,就是只能访问当前域名下的url 。
JS的跨域访问 , 就是在不同的域名下进行HTTP请求与响应 。JSONP就是一种常用的跨域通信方式 , 他利用了脚本跨域能力来模拟Ajax请求 。
JSONP原理:由于Ajax请求受到同源策略的限制 , 所以无法跨域访问数据 。服务端需要拼接的回调函数及返回数据
注意:这里用callback参数字段将客户端需要执行的回调函数名传给服务端 , 服务端只需在封装好json数据后 , 根据该字段值动态创建同名的回调函数即可 。
DOM文档对象模型(document object model)是用来表示和操作html和XML文档内容的基础API 。Document类型代表了一个HTML或XML文档 , document对象则是用来保存整个web页面的dom结构 , 在页面上所有的元素最终都会映射为一个dom对象 。对页面节点的操作也是通过document对象中的方法来实现的 。
document对象中常用的Dom操作方法有:getElementById();getElementsByClassName();querySelector();getAttribute();等等 。
BOM浏览器对象模型(browser object model)是用于和浏览器窗口进行交互的对象 , 也可用于窗口与窗口之间的通信 。它的核心对象是window , 在window对象当中也提供了很多其他对象属性用于操作和管理浏览器的各个部分 。常用的window对象属性有:
推荐阅读
- 天风策略:18大科技细分行业重新划分 核心标的一览
- Docker三大核心组件:镜像、容器与仓库,你了解多少呢?
- Nginx为什么高效?一文搞明白Nginx核心原理
- C指针!
- 基本概念+优缺点+美团应用案例 一文看懂逻辑回归算法
- 特斯拉销量大增205%,股价狂飙 概念股大涨
- Javascript事件轮询
- 日照绿茶核心产区
- 信阳毛尖的核心产区有哪几个
- 1分钟读懂JavaScript、Ajax、jQuery全部知识点
