读《javascript语法精粹》知识点总结

读《javascript语法精粹》知识点总结



  昨天泡了大半天的读书馆,一口气看完了《javascript语法精粹》这本书,总体来说这本书还是写的不错,难怪那么多的推荐。《javascript语法精粹》主要是归纳与总结了javascript中的重点知识,下面我把我看玩后觉得比较重要的知识点分享出来。

  《javascript语言精粹》重要知识点

一、比较有意思的递归函数

  1.一个有意思的递归,形成数据结构,0,1,1,2,3,5,8,13……(其实在我的《javascript常用知识点集》中也写过这个递归,在不厌其烦的提一下)

  ①方法一:

var fibonacci = function (n){
    //return n<2 ? n : arguments.callee(n-1) + arguments.callee(n-2);
    return n<2 ? n :fibonacci(n-1)+fibonacci(n-2);
}

  ②闭包方法实现:


复制代码
var fibonacci = function(){
    var memo = [0,1];
    var fib = function(){
        var result = memo[n];
        if(typeof result !== ‘number‘ ){
            result = fib(n-1) + fib(n-2);
            memo[n] = result;
        }
        return result;
    }
    return fib;
}()

复制代码

二、正则部分RegExp

  (...)捕获型分组,又可以叫字表达式,捕获型分组会复制它所匹配的文本,并将其放到result数组里,每个捕获分组都会被指定一个编号。
   (?:)非捕获性分组,仅做简单的匹配,并不会捕获所匹配的文本,性能比捕获性分组效率高,非捕获性分组不会干扰捕获型分组的编号。
   正则转义,如果对特殊字符转义拿捏不准时,可以给任何特殊字符都添加一个\前缀来使其字面化,注意\前缀不能使字母或数字字面化。常见的需要转义的字符 - / [ \ ] ^ {}等

三、javascript中的标准方法集

  ①Array

  array.concat(item...)
  contcat方法产生一个数组,它包含一份array的浅复制并把一个或多个参数item附加在其后。

   array.join(separator)
  join方法把一个array构造成一个字符串。它先把array中的每个元素构造成一个字符串,接着用一个separator分隔符串把他们连接在一起。

   array.pop()
  pop和push方法使得数组array可以像堆栈(stack)一样工作。pop方法移除array中的最后一个元素并返回该元素。

   array.push(item...)
  push方法把一个或多个参数item附加到一个数组的尾部,返回这个array的新长度值。

   array.reverse()
  reseverse方法反转array里的元素的顺序,并返回array本身。

   array.shift()
  shift方法移除数组array中的第一个元素并返回该元素。如果这个数组array为空的,它就会返回undefined。通常shift比pop慢。

   array.slice(start,end)
  slice方法对array中的一段做浅复制。首先复制array[start],一直复制到array[end]为止。

   array.sort(comparefn)
  sort方法对array中的内容进行排序。排序原理为哈希表,sort方法排序不稳定,排序的稳定性是指排序后数组中的相等值得相对位置没有发生改变,而不稳定性排序则会改变相等值得相对位置。

   array.splice(start,deleteCount,item,……)
  splice方法从array中移除一个或多个元素,并用新的item替换它们。

   array.unshift(item...)
  unshift方法像push方法一样,用于把元素添加到数组中,但它是把item插入到array的开始部分而不是层部。

  

  ②Function

  function.apply(thisArg , argArray)
  apply方法调用function,传递一个会绑定到this上的对象和一个可选的数组作为参数。apply方法被用在apply调用模式中。

  例arg.concat(slice.apply(arguments,[0]));
  function.call(this)

 

  ③Number

  number.toExponential(fractionDigits)
  toExponential方法把这个number转换成一个指数形式的字符串。可选参数fractionDigits控制其小数点后的数字位数。它的值必须在0~20:

document.writeln(Math.PI.toExponential(0)); //3e+0
document.writeln(Math.PI.toExponential(2)); //3.14e+0
document.writeln(Math.PI.toExponential(7)); //3.1415927e+0

  number.toFixed(fractionDigits)
  toFixed方法把这个number转换成为一个十进制数形式的字符串。可选参数fractionDigits控制其小数点后的数字位数

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。