JavaScript随记

127 阅读4分钟

JavaScript随记(2019-11)

一、函数的声明
(1)function 命令

function print(s) {
  console.log(s);
}

(2)函数表达式

var print = function(s) {
  console.log(s);
};

(3)Function 构造函数

var add = new Function(
  'x',
  'y',
  'return x + y'
);

// 等同于
function add(x, y) {
  return x + y;
}

上面代码中,Function构造函数接受三个参数,除了最后一个参数是add函数的“函数体”,其他参数都是add函数的参数。

你可以传递任意数量的参数给Function构造函数,只有最后一个参数会被当做函数体,如果只有一个参数,该参数就是函数体。

二、函数的arguments对象

arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数
arguments不是数组,要想使用数组方法,需要转换成数组
两种方法:

var args = Array.prototype.slice.call(arguments);  //slice方法
var args = [];                                     //逐一填入新数组
for (var i = 0; i < arguments.length; i++) {
  args.push(arguments[i]);
}

三、闭包

闭包(closure)可以简单理解成“定义在一个函数内部的函数”。
优点:一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。
缺点:外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。

四、Array对象

1、push() 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
2、pop() 方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
3、shift() 方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
4、unshift() 方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
5、join() 方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔。
6、concat() 方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
7、reverse() 方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。
8、slice() 方法用于提取目标数组的一部分,返回一个新数组,原数组不变。

arr.slice(start, end);

9、splice() 方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。

arr.splice(start, count, addElement1, addElement2, ...);

10、sort() 方法对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
11、map() 方法将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。
12、forEach() 方法与map方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。这就是说,如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach方法。
13、filter() 方法用于过滤数组成员,满足条件的成员组成一个新数组返回。

[1, 2, 3, 4, 5].filter(function (elem) {
  return (elem > 3);
})
// [4, 5]

14、some() 方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false。

var arr = [1, 2, 3, 4, 5];
arr.some(function (elem, index, arr) {
  return elem >= 3;
});
// true

15、every() 方法是所有成员的返回值都是true,整个every方法才返回true,否则返回false。

var arr = [1, 2, 3, 4, 5];
arr.every(function (elem, index, arr) {
  return elem >= 3;
});
// false

16、indexOf() 方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。

var a = ['a', 'b', 'c'];

a.indexOf('b') // 1
a.indexOf('y') // -1

17、lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。