assert
我在node.js的模块中遇到了一些奇怪的行为。我不确定这是错误还是预期行为。
当我创建一个数组,然后在第三个元素上初始化一个值时,前两个元素是未定义的。测试前两个元素是否未定义返回 true,但是将数组作为一个整体与undefined
前两个元素进行比较失败。
var assert = require('assert');
var a = [];
a[2] = 2;
console.log(a); // [ , , 2 ]
assert.equal(a[0], undefined); // ok
assert.equal(a[1], undefined); // ok
assert.equal(a[2], 2); // ok
assert.deepEqual(a, [, , 2]); // ok
assert.deepEqual(a, [undefined, undefined, 2]); // error ???
我可以理解 undefined 元素和具有 value 的元素之间存在差异undefined
,因为Array
extendsObject
和数组元素只是对象上的属性。
但是为什么最后一个断言失败了?