JavaScript 中不可变数据结构(Immutable structures)和克隆(clone)

对象克隆是一个棘手的问题,它有很多边缘情况。原因很简单。对象维持内部状态有很多技巧及衍生品,但是很容易被滥用。

克隆对象是你应用程序正在发展的指示器,并且你有一个复杂的对象,你想要作为一个不变的值,即在保持先前状态的同时进行操作。

如果这个对象在你的控制范围之内,那么你很幸运。如果要进行一些重构,可能会让你重新考虑对象的结构和行为来完全避免问题。 继续阅读

密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

需要一个密码强度正则表达式在用户注册时校验用户密码强度:密码至少8个字符,包括1个大写字母,1个小写字母和1个数字或特殊字符,例如#?!。网上搜索了一些解决方案分享给大家。

继续阅读

Visual Studio Code 必备插件,主题及语法提示

Visual Studio Code 是由微软开发的一款免费的,跨平台文本编辑器。由于其出色的性能表现和丰富的功能,它很快成为了开发者的最爱。

与大多数 IDE 一样,VSCode 也有一个扩展市场,包含数千个具有不同功能的插件。为了帮助您挑选值得下载的东西,我们收集了这些最有用和最有趣的扩展。
继续阅读

2017年最新的 <head> 元素指南

整理了一份关于可以写入到HTML 标签中的内容清单-2017年最新的 <head> 元素指南,主要内容来自 <head> cheatsheet ,让大家了解每个标签及相应属性的意义,写出满足自己需求的 <head> 头部标签,可以很有效的增强页面的可用性。

你也可以查看移动前端不得不了解的HTML5 head 头标签 继续阅读

前端开发中的 正则表达式 及常用正则表达式大全

RegExp 是正则表达式(Regular expression)的缩写,就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 ‘a’ 和 任意个 ‘b’ ”,那么 ‘ab’, ‘abb’, ‘abbbbbbbbbb’ 都符合这个特征。

正则表达式可以用来:

  1. 验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
  2. 用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
  3. 用来替换,比普通的替换更强大。

创建一个正则表达式

你可以使用以下两种方法之一构建一个正则表达式: 继续阅读

JavaScript 中的递归和尾调用

如果你已经有一段时间的 JavaScript 开发经验,你很有可能会遇到递回这个定义,给定一个数字来阶乘,n! = n * (n - 1) * ... * 1 就是一个标准的递回例子。

function factorial(n) {
    if (n === 0) {
        return 1;
    }
    return n * factorial(n - 1);
}

上面所示的例子是阶乘函数最简单的实现。 继续阅读

JavaScript 函数式编程术语大全

函数式编程(FP)有许多优点,它也越来越流行了。然而,每个编程范式都有自己独特的术语,函数式编程也不例外。通过提供的这张术语表,希望使你学习函数式编程变得容易些。

示例以 JavaScript (ES2015) 方式呈现。 Why JavaScript?

这是一份 WIP; 欢迎随时 PR 😉

在适用的情况下,本文档使用的术语定义在 Fantasy Land spec继续阅读

[回归基础]JavaScript 函数中的参数:Parameters(形参) 和 Arguments(实参)

Parameters(形参) 和 Arguments(实参) 一样吗?

Javascript是一种函数式语言,这意味着函数是主要的执行模块单元。显然,JavaScript中的函数非常重要。当讨论函数时,术语 parameters(形式参数,简称形参) 和 arguments(实际参数,简称实参) 通常可以混用,就好像它们是一样的,但其实有一个非常微妙的区别。

  • Parameters(形参) 是函数定义时的形式参数,作为函数定义的一部分,是列出类的变量。
  • Arguments(实参) 是函数调用时的实际参数,是在函数被调用时传递给该函数的变量值。

我们为什么要为这个微小的差异而烦恼呢? 继续阅读

npm scripts : 每个前端开发都应知道的一些使用提示

npm 不仅是 JavaScript 的包管理工具,它还可以用于你代码库相关的配置工具,如 Linters(代码检查工具)、transpilers(代码转译工具)、testing(测试工具)和servers(本地服务器)等。这些都可以根据软件包的说明进行配置并运行。基本用法也很简单。

你可以在 package.json 主对象中的 scripts 属性中指定 scripts ,然后使用 npm run 运行 scripts。

例如:

{
  ...
  "scripts": {
    "build": "webpack --progress",
    "test": "karma start",
    "server": "webpack-dev-server"  
  }  
  ...
}

然而,在执行你的配置时,有些细节可能会很有用。 继续阅读