JS零碎知识总结

 ①JS 垃圾回收方案是:
(1)遍历所有的可访问对象
(2)回收已不可访问的对象
优化策略:
分代回收(多回收临时对象区,少回收持久对象区)
增量GC(每次处理一点,下次再处理一点)

②stringObject.indexOf(searchvalue,fromindex)
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

1
2
3
var arr = [1,2,3,4,5];
console.log(arr.indexOf(3)) // 2
console.log(arr.indexOf(3,1)) //2

解释下,arr.indexOf(3)这个好理解,就是返回3出现的索引位置,为2没毛病。
再看arr.indexOf(3,1) ,最开始的时候以为,是从索引为1的位置,就是2这个位置开始查找。返回3这个值出现的位置。那应该是1 啊。要是这么理解就望文生义了。
其实真相是这个样子的:他只是查找的位置改变了。返回的还是从头算起改值的索引(索引为0 的位置开始)的结果。

③++ –
++i, i++在单独使用时,都是i=i+1。

a=++i 相当于 i=i+1, a=i; 前加加 先计算后赋值

a=i++ 相当于a=i, i=i+1。 后加加 先赋值后计算

这样解释比较清晰


substring() 方法用于提取字符串中介于两个指定下标之间的字符
substr() 方法从字符串中提取从 startPos位置开始的指定数目的字符串。

substring(start,end)

  • substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
  • 如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
  • 如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
  • 如果 start 或 end 为负数,那么它将被替换为 0。

    stringObject.substr(start [, length ])

  • 如果start为负数,则start=str.length+start。
  • 如果 length 为 0 或负数,将返回一个空字符串。
  • 如果没有指定该参数,则子字符串将延续到stringObject的最后。

    ⑤ window
    535483720001a54506670563.jpg

    ⑥ for in for of 区别
    for (var key in arr){
    console.log(arr[key]);
    }

    for (var value of arr){
    console.log(value);
    }

    ⑦eval()
    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

    ⑧slice()
    slice() 方法可从已有的数组中返回选定的元素
    您可使用负值从数组的尾部选取元素

    ⑨apply() call()区别
    apply()把参数打包成Array再传入;

    call()把参数按顺序传入。


Javascript垃圾回收