函数柯里化currying,是函数式编程非常重要的一个标志。它的实现需要满足以下条件,首先就是函数可以作为参数进行传递,然后就是函数可以作为返回值return出去。我们依靠这个特性编写很多优雅酷炫的代码。那我们来看一下最简单的实现。大家一般都是举addSum的例子,我当然也不例外。add = (num1)->return (num2)->return num1 + num2;add3 = add(3);
add5 = add(5);add3(5) # 返回8
add5(5) # 返回10 上述例子其实已经对柯里化的实...
在 JavaScript 中,代码块、函数或模块为变量创建作用域。例如 if 代码块为变量 message 创建作用域:`if (true) {
const message = ‘Hello‘;
console.log(message); // ‘Hello‘
}
console.log(message); // throws ReferenceError
`
在 if 代码块作用域内可以访问 message。但是在作用域之外,该变量不可访问。以下是 5 种有趣的情况,其中 JavaScript 作用域的行为与你预期的不同。你可能会研究这些案例以提高...
1.script元素async和defer属性async:异步脚本,异步下载脚本时,不会阻塞文档的解析,但是一旦下载完成,立即执行,会阻塞文档解析;(不一定按照文件顺序执行)defer:延迟脚本,脚本会被异步下载但不会立即执行,直到文档的载入和解析完成,并可以操作,文档才会执行;(按照文件顺序执行) 2.typeof null; // "Object" typeof 正则表达式; // "Object" (Safari5&Chrome7及以前返回function) undefined派生自null: consol...
JavaScript 中,大多数情况下,我们不会发现 location.host 与 location.hostname 的区别,因为大多数情况下,我们的网页用的是 80 端口。他们的区别:location.host 包含端口,比如是 127.0.0.1:81。如果端口是 80,那么就没有端口,就是 127.0.0.1。location.hostname 不包含端口,比如是 127.0.0.1。原文:http://www.cnblogs.com/azhqiang/p/7390378.html
创建节点createElement()var node = document.createElement(“div”);没什么可说的,创建一个元素节点,但注意,这个节点不会被自动添加到文档(document)里。2、创建文本节点createTextNode()var value = document.createTextNode(“text”);创建一个文本节点,常用来往元素节点里添加内容,也不会自动添加到文档里。很多人知道innerHTML,不知道这个方法,这个添加的是静态文本,如果插入的内容不带HTML格式,用createTextNode...
javascript工具--控制台详解(转自 阮一峰博客)大神这篇博客是写在2011年,主要介绍 “Firefox” 浏览器插件 “Firebug” 的操作,如今主流浏览器对控制台都已经提供了很好的支持。我自己用的最多是谷歌的 “chrome” 浏览器,下面也用 “chrome” 浏览器来调试。一、显示信息的命令console.log(); //控制台输入 网页中不会输出console.info(); //一般信息console.debug(); //除错信息console.warn(); //警告提示console.erro...
“cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。” - w3school cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人资料信息。 从JavaScript的角度看,cookie 就是一些字符串信息。这些信息存放在客户端的计算机中,用于客户端计算机与服务器之间传递信息。 在JavaScript中可以通过 document.cookie 来...
// BOM// 判断是否为IE浏览器,返回-1或者版本号
function isIE() {var uUserAgent = navigator.userAgent; //保存浏览器的userAgentvar ieAgent = uUserAgent.match(/msie (\d+.\d+)/i);if (ieAgent) {return ieAgent[1];} else {if (uUserAgent.match(/Trident\/7.0;/i)) { //处理到ie11.ieAgent = uUserAgent.match(/rv:(\d+.\d+)/i);return ieAgent[1];}return -1; //不是ie浏览器。}
}/*** 设置cookie* @param {String} cooki...
每个企业在做重要决定时都倾向于做数据分析。实际上他们很多时候都是沉沦在数据里头,不知道如何跳出其中。随着大数据的到来,曾经好用的表格和图表只是不再削减它了。企业一直寻求更好的方式来可视化数据,更好的互动和使图表多角度。毕竟,只有从数据中抽出的见解才是有用的。JavaScript 图表库出现了,作为漂亮的,容易理解的,交互式的可视化图表最有力的工具。它能更容易提取和传达关键的模式和见解,而静态图表往往不明显。为...
最近在做网站自动登陆小工具,遇到技术屏障。密码在submit时会使用js进行加密。这时我需要模拟这个加密过程,想到使用C#执行javascript代码。对于执行javascript代码,纯代码方式使用如下两种方式。1、Google Chrome V8引擎Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高。地址: http://javascriptdotnet.codeplex.com/using Noesis.Javascript;
using System;
using System.Collections.Generic;namespace JsCSharp...
MapJavaScript的默认对象可以视为其他语言的dictionary和map,键值对。但它的键必须为字符串,为了解决这个问题ES6引入了数据类型Map。Map也是一组键值对的结构,具有极快的查找速度。用Map实现通过名字快速查询成绩:var m = new Map([[‘Michael‘, 95], [‘Bob‘, 75], [‘Tracy‘, 85]]);
m.get(‘Michael‘); // 95好处是无论数据有多大,查询速度不会变慢。另一种写法;var m = new Map(); // 空Map
m.set(‘Adam‘, 67); //...
上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此
apk。然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了
apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,否则下载不了
apk。那么该如何判断用...
闭包这个东西确实好用,理解他对学习JavaScript确实很有帮助。闭包的内部细节,依赖于函数被调用过程所发生的一系列事件为基础,所以有必要先弄清楚以下几个概念:1. 执行环境和活动对象、2. 作用域链。在javascript中,执行环境可以抽象的理解为一个object,它由以下几个属性构成:executionContext:{
variable object:vars,functions,arguments,
scope chain: variable object + all parents scopes
thisValue: context object...
使用<audio>和<video>元素的play()和pause()方法,可以手工控制媒体文件的播放。组合使用属性、事件和这两个方法,很容易创建一个自定义的媒体播放器,如下面的例子所示。 1<div class="mediaplayer"> 2<div class="video"> 3<video id="player" src="movie.mov" poster="mymovie.jpg" 4 width="300" height="200"> 5 Video player not available.6</video> 7</div> 8<div class="controls"> 9<input type="button" ...
[20141121]JavaScript之Array常用功能汇总*:first-child {margin-top: 0 !important;
}body>*:last-child {margin-bottom: 0 !important;
}/* BLOCKS
=============================================================================*/p, blockquote, ul, ol, dl, table, pre {margin: 15px 0;
}/* HEADERS
=============================================================================*/h1, h2, h3, h4, h5, h6 {margin: 20p...