如何形象地解释 JavaScript 中 map,foreach,reduce 间的区别
假设我们有一个数组,每个元素是一个人。你面前站了一排人。
创新互联专业为企业提供万源网站建设、万源做网站、万源网站设计、万源网站制作等企业网站建设、网页设计与制作、万源企业网站模板建站服务,10多年万源做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
foreach 就是你按顺序一个一个跟他们做点什么,具体做什么,随便:
people.forEach(function (dude) {
dude.pickUpSoap();
});
map 就是你手里拿一个盒子(一个新的数组),一个一个叫他们把钱包扔进去。结束的时候你获得了一个新的数组,里面是大家的钱包,钱包的顺序和人的顺序一一对应。
var wallets = people.map(function (dude) {
return dude.wallet;
});
reduce 就是你拿着钱包,一个一个数过去看里面有多少钱啊?每检查一个,你就和前面的总和加一起来。这样结束的时候你就知道大家总共有多少钱了。var totalMoney = wallets.reduce(function (countedMoney, wallet) {
return countedMoney + wallet.money;
}, 0);
补充一个 filter 的:
你一个个钱包数过去的时候,里面钱少于 100 块的不要(留在原来的盒子里),多于 100 块的丢到一个新的盒子里。这样结束的时候你又有了一个新的数组,里面是所有钱多于 100 块的钱包:
var fatWallets = wallets.filter(function (wallet) {
return wallet.money 100;
});
最后要说明一点这个类比和实际代码的一个区别,那就是 map 和 filter 都是
immutable methods,也就是说它们只会返回一个新数组,而不会改变原来的那个数组,所以这里 filter
的例子是和代码有些出入的(原来的盒子里的钱包减少了),但为了形象说明,大家理解就好。
[img]javascript、JSP、JS有什么区别和联系
JS是JAVASCRIPT的缩写,是客户端脚本语言,开发WEB程序的辅助语言之一,虽然说是辅助,但是其重要性也是很高的。
JSP是一种技术。通过JAVA语言实现的。
它们之间的关系:如果你用JSP开发WEB程序,那么其开发过程中使用的主要语言就是JAVA,JS是辅助语言。可以理解为主次关系。主:JAVA,次:JS
备注:JS的重要性在于它是WEB开发过程中经常会用到的一个客户端脚本语言,如果你用.NET开发WEB程序也是会用到JS的。只要是WEB领域,基本都会用到它,它的作用域非常广泛。
扩展资料:
JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}︰
Javascript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。
V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译),但由于V8的核心部份多数用Javascript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。
参考资料:百度百科-语言脚本
javascript是什么意思?
JavaScript简称“JS”是一种轻量级的脚本语言,可以部署在多种环境,最常见的部署环境是浏览器。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序的操作方法
JavaScript的核心部分相当精简,只包括两个部分
1、基本的语法构造(比如操作符、控制结构、语句)
2、标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)。
除此之外,还有提供的额外API可以分成三大类:浏览器控制类、DOM类、Web类
JavaScript的调试工具也是极其简单。只要安装了chrome浏览器,那么在其自带的“开发者工具”中唤醒“控制台”,就能够随时运行和调试JavaScript代码
控制台(console)就是指代码运行和调试的一个工具,因为开发者可以在这个工具中对整个代码的运行过程进行调控,故形象的被成为控制台。
简单形象地简介下javascript闭包、封装、原型、作用域链等等概念
闭包
闭包就是能够读取其他函数内部变量的函数。
最大用处有2个:
1.读取函数内部变量
2.让这些变量的值始终保持在内存中
参考资料:
封装
其实就是用js模拟出类的写法,将你写成程序按照面向对象的思想去包装起来,方便调用
参考资料:
原型
每个javascript对象都有一个原型对象(简称原型),这个原型是由该对象的构造函数所定义(javascript自动创建的),并且对象继承原型的所有属性和方法(函数)。
参考资料:
作用域链
Javascript作用域问题简单的可以用一句话来概括:两种类型的作用域( global, function)、三条作用域链。
理解两种三条前需要明白两点:
1) JavaScript是词法作用域,当一个函数被定义后,它的作用域链就作为函数的内部状态被保存了。
2) 在函数被定义时虽然作用域链确定了,但作用域链中的属性并没有确定。
两种类型的作用域:
1) 全局作用域 -- 变量为window对象的属性(默认浏览器环境中)。 作用域链:window
2) 函数作用域-- 变量查找的的顺序(即作用域链) 当前call object -- .... -- window object
特殊的一条作用域链:
通过HTML属性定义的事件处理代码:匿名函数的call object -- 当前节点 -- 父节点--...-- window object
参考资料:
什么是 JavaScript ?
javascript是客户端(浏览器端)脚本语言 可以用来做页面特效和用提交的信息的验证 比如:在注册页面上 用户要输入用户名、密码、年龄等等信息 这个时候就可以用到javascript验证 例如验证密码是否符合要求 验证年龄是否是纯数字或者年龄大小验证 比如:用户在年龄一行中输入一个148 这样的年龄是不合要求的年龄 不能直接保存到数据库去 所以 这个时候javascript就能发挥功效了 当用户输入了不和适的信息的时候 javascript可以对信息进行验证 验证信息不符合标准就不提交到数据库 说的形象一点 :javascript就想是服务器和客户端(主要是浏览器)之间的一道筛选的屏障 对用户请求的要保存到数据库的信息进行过滤 主要就是这些作用 当然 还有 利用javascript还可以做很多页面特效 例如图片的自动切换 动态时钟等等 这些用javascript都可以实现 另外 javascript和java什么关系 只是在语法上有一点类似 javascript很容易就能学会 就这些吧 满意的话给个好评哦 呵呵
本文标题:javascript形象,JavaScript特征
链接地址:http://lswzjz.com/article/dsohcjh.html