void和undefined
一直以来,undefined
都不是 JavaScript 的关键字或保留字,这意味着我们可以修改 window.undefined
的值。由于 undefined
会被频繁调用作为比较运算的操作数等原因,修改 undefined
的值是有弊端的,所以在 ES5 规范之后,window.undefined
被定义为不可写、不可配置的属性。

一直以来,undefined
都不是 JavaScript 的关键字或保留字,这意味着我们可以修改 window.undefined
的值。由于 undefined
会被频繁调用作为比较运算的操作数等原因,修改 undefined
的值是有弊端的,所以在 ES5 规范之后,window.undefined
被定义为不可写、不可配置的属性。
尽管 JavaScript 总是让人产生误解,但是它已经成为了最流行的编程语言之一。理解 JavaScript 的内在原理很困难。同样的,迫使 JavaScript 成为常规规范,如面向对象或函数编程,同样具有挑战性。这里我强调阐明 JavaScript 核心部分的原生函数。
数组(Array)是JavaScript最常用类型之一。初学者也最容易将数组(Array)和对象(Object)混淆,而且和其它语言中的数组又有着相当大的区别。作为一位初学者,为了能理清楚数组,把自己学习过程中做了一些笔记。
很多时候我们需要对JavaScript中数据类型(Function
、String
、Number
、Undefined
、Boolean
和Object
)做判断。在JavaScript中提供了**typeof
**操作符可以对这些常用的数据类型做判断。但要使用typeof
来判断数据是不是一个数组,就不起作用了。那在实际生产中要如何来检测数据是不是一个数组呢?
JavaScript是一种弱类型语言,不像其它程序语言需要严格定义数据类型。在JavaScript中数组可以任意修改变动,这样也就出现了一个问题,如果边遍历数组边操作数组(比如删除当前项,则所有之后的数组元素下标都将向前移动)是一件很危险的事情。JavaScript的数组是一个拥有堆栈和队列自身优点的global
对象。也就是说JavaScript数组可以表现的像栈(LIFO)和队列(FIFO)一样操作。这也是JavaScript数组强大的可操作性的体现。
在实际的业务当中,很多时候要对定义好的数组重新排序。在JavaScript中自带了两个方法,可以对数组进行排序操作。这两个方法就是sort()
和reverse()
。今天就来学习这两个方法相关的知识。
JavaScript为操作已经包含在数组中的项提供了很多方法。比如push()
、pop()
、shift()
和unshift()
实现数组的增删操作、sort()
和reverse()
对数组项进行排序操作。今天学习操作数组的其他方法:concat()
、slice()
和splice()
。
众所都之,数组项在一个数组中都有自己的位置。在JavaScript中提供了两个确定数组项位置的方法:indexOf()
和lastIndexOf()
。今天我们主要一起学习这两个方法是如何使用,又是如何查找出数组项在数组中的确切位置。
使用数组总是会碰到数组的遍历(迭代)操作。说到迭代,可能会立马想起for
语句对数组进行迭代。在ES5中新增加了五种遍历方法:forEach()
、every()
、some()
、map()
和filter()
,这五个数组迭代的方法中,其中forEach()
、every()
和some()
方法不生成一个新数组,而filter()
和map()
方法将会生成一个新数组(符合条件)。并且这些方法都会调用指定的函数callbackfn
。那么接下来就一起了解这几个方法的使用。
reduce()
和reduceRight()
两个方法功能都是类似的,可以让数组调用一个回调函数callbackfn
作为累加器。实际上根据这个回调函数,可以实现不同的功能,比如说,对数组项求合;将多个数组合并到一个数组等等。甚至配合数组其他的方法你还可以做更多功能的处理。如果感兴趣的话不仿尝试一二。