-
创建函数不同方式:常见的函数声明、函数表达式 1、函数声明如下: function add(a,b){ a = +a; b = +b; return a+b; } 2、函数表达式如下: //函数变量表达式 var add = function(a,b){ ... }; //立即执行函数表达式 (function(){ ... })(); //返回 function对象 return function(){ ... }; //匿名式函数表达式 var add = function foo(a,b){ ... }查看全部
-
1、不同调用方式下this指向不同 2、arguments和参数有一定连带关系 3、作用域 4、函数表达式可以用new函数构造器的方式创建函数对象查看全部
-
函数是一块 JS 代码,被定义一次,但可以执行和调用多次。 JS 中的函数也是对象,所以 JS 函数可以像其它对象那样操作和传递,所以我们也常叫 JS 中的函数为函数对象。 平常的函数声明调用function foo(){},foo();若无return语句,则返回undefined。 1、函数体里无return或者return 基本数据类型,函数返回this; 2、如果返回一个对象,将会由这个对象做为new构造器返回值--不理解查看全部
-
函数调用的几种方式 直接调用 foo() 对象方法 o.method() 构造器 new Foo() call/apply/bind func.call(o)查看全部
-
字符串和数组 var str = "hello world"; str.charAt(0); // "h" str[1]; // e Array.prototype.join.call(str, "_"); // "h_e_l_l_o_ _w_o_r_l_d“ 备注:1、字符串不是数组,但是字符串类数组, 可以按照数组的方式访问 2、数组的话直接可以这样 var arr = [1, 2, 3]; arr.join("_"); // "1_2_3"查看全部
-
数组和一般对象比较: 1、相同点:都可以继承;数组是对象,对象不一定是数组;都可以当做对象添加删除属性 2、不同点:数组自动更新length;按索引访问数组常常比访问一般对象属性明显迅速;数组对象继承Array.prototype上的大量数组操作方法查看全部
-
13、判断是否为数组:Array.isArray 注意:此方法是Array构造器上的, 不是数组原型链上的,需要如下使用 1、Array.isArray([]); // true 2、[] instanceof Array; // true 3、({}).toString.apply([]) === '[object Array]'; // true 4、[].constructor === Array; // true 备注:constructor可以被修改,如果是继承的不可以用此方法查看全部
-
12、数组检索:Array.prototype.indexOf&lastIndexOf var arr = [1, 2, 3, 2, 1]; /*从左往右,第1个参数:查找元素, 第2个参数起始位置*/ arr.indexOf(2); // 1 arr.indexOf(99); // -1 arr.indexOf(1, 1); // 4 arr.indexOf(1, -3); // 4 arr.indexOf(2, -1); // -1 /*从右往左,第1个参数:查找元素, 第2个参数起始位置*/ arr.lastIndexOf(2); // 3 arr.lastIndexOf(2, -2); // 3 arr.lastIndexOf(2, -3); // 1查看全部
-
11、数组元素两两做操作,聚合成一个结果:Array.prototype.reduce&reduceRight /*求和*/ var arr = [1, 2, 3]; var sum = arr.reduce(function(x, y) { return x + y }, 0); // 6 arr; //[1, 2, 3] /*求最大值,从左到右*/ arr = [3, 9, 6]; var max = arr.reduce(function(x, y) { console.log(x + "|" + y); return x > y ? x : y; }); // 3|9 // 9|6 max; // 9 /*求最大值,从右到左*/ max = arr.reduceRight(function(x, y) { console.log(x + "|" + y); return x > y ? x : y; }); // 6|9 // 9|3 max; // 9查看全部
-
10、数组判断:Array.prototype.every & some 1、数组中每一个元素都要符合条件 var arr = [1, 2, 3, 4, 5]; arr.every(function(x) { return x < 10; }); // true arr.every(function(x) { return x < 3; }); // false 2、数组中有一个元素符合条件 var arr = [1, 2, 3, 4, 5]; arr.some(function(x) { return x === 3; }); // true arr.some(function(x) { return x === 100; }); // false查看全部
-
9、数组过滤:Array.prototype.filter var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; arr.filter(function(x, index) { return index % 3 === 0 || x >= 8; }); // returns [1, 4, 7, 8, 9, 10] arr; // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]查看全部
-
8、数组映射:Array.prototype.map 原数组不会被修改 var arr = [1, 2, 3]; arr.map(function(x) { return x + 10; }); // [11, 12, 13] arr; // [1, 2, 3]查看全部
-
7、数组遍历:Array.prototype.forEach forEach开始是ESM5中的,仅支持IE9+以上,不会修改原数组 /*第1个参数:值,第2个参数:索引, 第3个参数:指向数组本身*/ var arr = [1, 2, 3, 4, 5]; arr.forEach(function(x, index, a){ console.log(x + '|' + index + '|' + (a === arr)); }); // 1|0|true // 2|1|true // 3|2|true // 4|3|true // 5|4|true查看全部
-
6、数组拼接:Array.prototype.splice /*删除从某一个位置开始片段*/ var arr = [1, 2, 3, 4, 5]; arr.splice(2); // returns [3, 4, 5] arr; // [1, 2]; /*删除从某一个位置开始的元素个数*/ arr = [1, 2, 3, 4, 5]; arr.splice(2, 2); // returns [3, 4] arr; // [1, 2, 5]; /*删除从某个元素同时添加新元素*/ arr = [1, 2, 3, 4, 5]; arr.splice(1, 1, 'a', 'b'); // returns [2] arr; // [1, "a", "b", 3, 4, 5] 备注: 原数组被改变查看全部
-
5、返回部分数组:Array.prototype.slice var arr = [1, 2, 3, 4, 5]; arr.slice(1, 3); // [2, 3] arr.slice(1); // [2, 3, 4, 5] arr.slice(1, -1); // [2, 3, 4] arr.slice(-4, -3); // [2] 备注: 1、范围区间:左闭右开 2、下标为负值:最后一个元素从-1开始 往左分别是:-1,-2,-3…查看全部
举报
0/150
提交
取消