loveky的头像

loveky

  • 译文
    24
  • 积分
    2045
  • 粉丝
    0

TA很懒,连一句话简介都没有留下

最新译文

NaN与typeof

NaN与typeof 深入阐述NaN属性以及它为何被视为一种number类型 首先,NaN不是关键字(和true,false,null等不同),它是全局对象上的一个属性。NaN的值和Number.NaN的值相同: NaN; // NaN Number.NaN; //...

Zone.js到底是如何工作的?

Zone.js到底是如何工作的? 如果你阅读过关于Angular 2变化检测的资料,那么你很可能听说过zone。Zone是一个从Dart中引入的特性并被Angular 2内部用来判断是否应该触发变化检测。 如果你去到zone.js的GitHub页面,你会发现它对Zon...

Canvas与SVG: 选择合适的工具

在jCanvas入门: 当jQuery遇上HTML5 Canvas发表在SitePoint之后,由Craig Buckler发起的一项讨论如雨后春笋般涌现出来:是否存在一些使用场景更适合使用HTML5 Canvas而不是SVG呢? 两者都是可以用来创建经验的图像与视觉...

6种ES6 proxies的使用案例

只有我有这种感觉吗?还是在ES6新特性大张旗鼓的宣传中Proxy真的被遗忘了? 这可能是由于Safari(完全不支持),Node(v6是第一个支持它的版本),和转译工具(Babel/TypeScript)对它缓慢且受限的支持造成的。同时,由于Proxy是一种元编程特性...

使用ES6默认参数与属性简写编写更简洁的代码

编写一个方法同样意味着开发一个API。不论是给你自己,你团队中的其他程序员还是其他使用你项目的开发者来说都是一样。根据你编写函数的大小,复杂程度以及目的,你需要考虑函数的默认行为以及函数输入/输出的接口。 函数的默认参数和属性简写是ES6中可以帮助你编写API的两个实...

ES5对象与ES6 Maps的异同

ES6中有一个名为map的新型数据结构。它的基本概念是你可以通过一个key向是一个map中存入数据,之后还可以通过传入这个key来获取数据。它会改变JavaScript的。。。等一下。。。 这不就是一个JavaScript对象吗? 这个问题已经困扰了我一段时间。乍看起...

寻找时间成为一名更优秀的程序员

没有时间做任何事。这就是你感受,不是吗?没有时间学习你觉得你需要学会以跟上潮流的知识。没有时间回过头去重构那些丑陋的代码。它至少能工作,何况截止日期马上就要到了。没有时间编写单元测试。没有时间为今后要维护你代码的伙计编写文档或注释。没有时间思考。没有时间呼吸。没时间...

使用JavaScript进行运动检测

我最近在RevolutionConf作了一个关于如何使用JavaScript开发一个运动检测web应用的分享。本文以博客形式记录了那次分享的内容。你可以在文末找到演示地址以及所有相关代码。 引子 我想知道我的宠物在我离开时都在做什么。但是我不想要连续的现场直播,因为那...

调试Node.js应用

本文是一个名为Node英雄系列教程中的第十篇 —— 在这些教程中,你会学习到如何使用Node.js并使用它开发软件产品。 在本文中,你将会学习如何通过debug模块,内置的Node调试器以及Chrome的开发者工具调试Node.js应用。 即将到来的和往期章节: N...

JavaScript中的数组创建

数组是一个包含了对象或原始类型的有序集合。很难想象一个不使用数组的程序会是什么样。 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元素 删除现有元素 本文涵盖了数组的初始化以及设置初始值的操作。在JavaScript中要做...

使用DevTools调试Node.js(每日构建版)

Node.js主干在五月份引入了关于调试性方面新的支持。 以下是如何获取并运行: 1. 下载node的每日构建版本 下面这段简短的bash脚本会自动帮你下载 gist.github.com/paulirish/a02f4aa2b5ce69f5c269d18e74f5...

编写自文档JavaScript代码的15种方式

在代码中找到一段不合时宜且毫无用处的注释是不是很好玩? 这是一个很容易犯的错误:你修改了代码却忘了删除或更新注释。糟糕的注释并不会弄坏你的代码,但你能想象这对调试代码造成的影响吗?你读了注释。它说的是一套,而代码做的是另一套。你将不得不花费时间来搞清楚到底发生了什么,...

为ES6配置JavaScript测试工具

现在已经可以很方便的使用使用ES6(亦或是未来的ES7)了,你只需配置好Babel就可以开始编码。如果你只是在NodeJS环境中开发,你甚至都不需要Babel,因为NodeJS自带的ES6支持已经越来越好了。 针对开发流程的工作流是非常简单和详细的,那么针对测试的呢?...

改变JavaScript的三个点: spread运算符与rest参数

当在函数调用中通过arguments对象访问参数时,我总是感觉很不爽。它那硬编码的名字使得要想在内层函数(它拥有自己的arguments)中访问外层函数的arguments变得很困难。 更糟糕的是它是一个类数组对象。这意味着你不能直接在它身上调用类似.map()或是....

实战函数式编程:使用Ramda.js

对我来说,使得JavaScript如此有趣的一个原因是它函数式编程方面的特性。从一开始函数就是JavaScript世界中的一等公民。这使得通过多种方式的组合编写优雅,富有表现力的代码成为可能。 然而,仅仅是拥有一些函数式编程的能力并不代表你的代码就是函数式的。Ramd...

给JavaScript开发者的函数式编程概念: 柯里化

在理解柯里化之前,每当听到其它程序员讨论这个概念时我都感到很焦虑。他们总是把它描述的复杂且难以理解,就好像每次提到这个话题时天边都会出现一团不详的雷雨。但是我可以向你保证,至少在编程领域,柯里化这个概念其实一点都不难理解。你很容易就可以掌握它,而且一旦掌握之后,一扇...

编写“纯粹”的JavaScript代码

一旦你网站或应用的代码量达到一定程度,它将不可避免的包含某种bug。这不是JavaScript特有的问题,而是一个几乎所有语言都有的通病 —— 虽然不是不可能,但是想要彻底清除程序中的所有bug还是非常难办到的。但是,这并不意味着我们不可以通过某些编码方式来预防bu...

详解JavaScript变量提升

变量在程序中随处可见。它们是一些始终在相互影响,相互作用的的数据和逻辑。正是这些互动使应用程序活了起来。 在JavaScript中使用变量很重要的一方面就是变量的提升 —— 它决定了一个变量何时可以被你的代码使用。如果你在寻找关于这方面的详细介绍,那你算是来对地方了。...

Web存储: 保存会话令牌更好的选择

最近我被问到使用Web存储而不是cookies保存会话令牌是否安全。在Google一番之后,我发现排名最高的结果几乎一致认为和cookie比起来web存储是非常不安全的。为了保证公开透明,我决定记录下使我得到相反结论的理由。 反对Web存储的核心争论是由于Web存储不...

Fetch API

在Web领域关于AJAX的一个最糟糕的秘密就是它的底层API ——XMLHttpRequest真的有点配不上我们对它的使用。虽然我们已经围绕XHR建立了优雅的API,但我们还可以做的更好。朝着更好方向的努力结果就是fetchAPI。让我们一起了解一下已经在Firefo...

Sinon指南: 使用Mocks, Spies 和 Stubs编写JavaScript测试

编写单元测试时遇到的最大的困难之一就是如何测试复杂代码。 在真实的项目中,各种各样的功能会使代码很难被测试。不论是浏览器中的Ajax请求,定时器,日期时间等功能,还是Node.js中的数据库,网络,文件操作。 这些功能之所以很难被测试是因为你不能在代码中控制它们。如果...

Sinon.js小技巧: 如何stub/mock像DOM元素一样的复杂对象

最近一些读者给我发来电子邮件,询问使用Sinon.js时如何处理更复杂的stub场景。 在本文中,我们将探讨当对象有多层嵌套,函数返回复杂的数据类型以及对象之间相互调用时该如何stub。 我们将以经常使用的DOM对象为例,通常在尝试对它们进行stub时会遇到一些挑战。...

利用控制台API调试Web应用

利用控制台API更方便的调试Web应用 许多年前,调试JavaScript代码无非就是在要调试的函数内部插入几句console.log()而已。有时你会发现问题的根源并不在于你正在查看的函数,而是出现在这些函数调用的其它函数内部。结果就是更多的console.log...

什么是Promise.try,为何它如此重要?

在#Node.js频道里经常困扰大家的一个话题是Bluebird提供的Promise.try方法。大家并不清楚该方法的功能也不知道为何要使用它。同时,几乎所有的关于Promsie的指南中针对该方法错误的演示使得这种情况没有任何改善。 在本文中,我会尝试解释究竟什么是P...