JavaScript 常用功能总结(2)

添加新元素到数组:

a.push( newElement); 删除: a.splice( i, 1); 查找: if (a.indexOf(v) > -1)  ... 循环: var i=0; for (i=0; i < a.length; i++) {   console.log( a[i]); }

如果数组较小,可使用foreach 循环:

a.forEach( function (elem) {   console.log( elem); })

JS 也提供克隆数组的函数:

var clone = a.slice(0);   Maps

map 提供key 到值得映射。JS map 是一串字符集,可包含空格:

var myTranslation = {      "my house": "mein Haus",      "my boat": "mein Boot",      "my horse": "mein Pferd" } 增加: myTranslation["my car"] = "mein Auto"; 删除: myTranslation["my car"] = "mein Auto"; 查找: if ("my bike" in myTranslation)  ... 循环: var i=0, key="", keys=[]; keys = Object.keys( m); for (i=0; i < keys.length; i++) {   key = keys[i];   console.log( m[key]); } 如果map 较小可使用foreach 语句: Object.keys( m).forEach( function (key) {   console.log( m[key]); }) 复制map var clone = JSON.parse( JSON.stringify( m)) 小结:JavaScript 支持4种基本的数据结构。

1:array lists:如["one","two","three"],special JS对象

2:records:特殊的JS 对象,如{firstName:"Tom", lastName:"Smith"};

3:maps: 如{"one":1, "two":2, "three":3}

4:entity 表:如下表所示,是一种特殊的map,值是有固定ID的记录。

 

record,map,entity 在实际应用中没有明显的区分,只是概念上的区分。对JS 引擎而言,都是对象。但是从概念上是有区分的。

  函数

如表1 所示,函数是特殊的JS 对象,有name 属性和length属性表示参数的个数,如下,判断v是否指向函数:

if (typeof( v) === "function") {...}

函数定义:

var myFunction = function theNameOfMyFunction () {...}

theNameOfMyFunction 是可选的,如果省略函数名称,则称该函数为匿名函数。通常,函数是通过变量来调用的,如上面的代码,则表示

myFunction 会调用myFunction()函数,而不是使用theNameOfMyFunction()调用。

匿名函数表达式在其他编程语言中称为lambda 表达式。如下代码是匿名函数。可以与预定义的sort函数对比:

var list = [[1,2],[1,3],[1,1],[2,1]];  list.sort( function (x,y) {    return ((x[0] === y[0]) ? x[1]-y[1] : x[0]-y[0]); });

函数声明:

function theNameOfMyFunction () {...} 与代码 var theNameOfMyFunction = function theNameOfMyFunction () {...}

等价;

声明了函数theNameOfMyFunction ,并使用theNameOfMyFunction 变量来引用函数。

JS 提供函数内联,closure机制允许JS 函数调用函数之外的使用变量。函数可以创建closure 来存储当前的环境。如下,不需要通过参数将外部变量的结果传给内部函数,它本身就是可用的。

var sum = function (numbers) {   var result = 0;   numbers.forEach( function (n) {       result += n;   });  return result; }; console.log( sum([1,2,3,4]));

当执行一个方法时,可以使用内置arguments 对象访问函数内的参数,arguments 对象与数组使用方法类似,有长度属性,也有索引,并且可以使用For语句来循环迭代。但是由于它并不是Array 实例,因此JS arrary的部分方法无法应用如foreach。

arguments 对象的元素个数与函数参数个数相同,也可以定义方法的时候不指定参数个数,在调用时,可为函数赋多个参数,如:

var sum = function () {   var result = 0, i=0;  for (i=0; i < arguments.length; i++) {     result = result + arguments[i];   }  return result; }; console.log( sum(0,1,1,2,3,5,8));  // 20

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3ff3025158fc7d0cb2968a3f0c15d609.html