摘要:
前言 v8 是 Chrome 的 JavaScript 引擎,其中关于数组的排序完全采用了 JavaScript 实现。 排序采用的算法跟数组的长度有关,当数组长度小于等于 10 时,采用插入排序,大于 10 的时候,采用快速排序。(当然了,这种说法并不严谨)。 我们先来看看插入排序和快速排序。 插 阅读全文
摘要:
乱序 乱序的意思就是将数组打乱。 嗯,没有了,直接看代码吧。 Math.random 一个经常会遇见的写法是使用 Math.random(): var values = [1, 2, 3, 4, 5]; values.sort(function(){ return Math.random() - 0 阅读全文
摘要:
定义 程序调用自身的编程技巧称为递归(recursion)。 阶乘 以阶乘为例: function factorial(n) { if (n == 1) return n; return n * factorial(n - 1) } console.log(factorial(5)) // 5 * 阅读全文
摘要:
定义 函数记忆是指将上次的计算结果缓存起来,当下次调用时,如果遇到相同的参数,就直接返回缓存中的数据。 举个例子: function add(a, b) { return a + b; } // 假设 memoize 可以实现函数记忆 var memoizedAdd = memoize(add); 阅读全文
摘要:
需求 我们需要写一个函数,输入 'kevin',返回 'HELLO, KEVIN'。 尝试 var toUpperCase = function(x) { return x.toUpperCase(); }; var hello = function(x) { return 'HELLO, ' + 阅读全文
摘要:
需求 我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次。 解决一:普通方法 var t; function foo() { if (t) return t; t = new Date() return t; } 问题有两个,一是污染了全局变量,二是每次调用 fo 阅读全文
摘要:
定义 维基百科中对偏函数 (Partial application) 的定义为: In computer science, partial application (or partial function application) refers to the process of fixing a 阅读全文
摘要:
定义 维基百科中对柯里化 (Currying) 的定义为: In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes mu 阅读全文
摘要:
前言 虽然标题写的是如何判断两个对象相等,但本篇我们不仅仅判断两个对象相等,实际上,我们要做到的是如何判断两个参数相等,而这必然会涉及到多种类型的判断。 相等 什么是相等?在《JavaScript专题之去重》中,我们认为只要 的结果为 true,两者就相等,然而今天我们重新定义相等: 我们认为: 不 阅读全文
摘要:
each介绍 jQuery 的 each 方法,作为一个通用遍历方法,可用于遍历对象和数组。 语法为: jQuery.each(object, [callback]) 回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。 // 遍历数组 $.each( [0,1,2], f 阅读全文