我在JavaScript中使用数组(包括w3schools和devguru)阅读的大多数教程都建议您可以使用var test = new Array(4);语法将整数传递给Array构造函数来初始化具有一定长度的数组.
在我的js文件中大量使用这种语法之后,我通过jsLint运行了一个文件,它吓坏了:
错误:第1行字符22处的问题:预期')'而是看到'4'.
var test = new Array(4);
第1行第23个问题:预期';' 而是看到')'.
var test = new Array(4);
第1行字符23处的问题:预期标识符而不是')'.
通过阅读jsLint对其行为的解释后,看起来jsLint并不真正喜欢new Array()语法,而是[]在声明数组时更喜欢.
所以我有几个问题.首先,为什么?我是否因使用new Array()语法而冒任何风险?是否存在我应该注意的浏览器不兼容性?第二,如果我切换到方括号语法,有没有办法声明一个数组并将其长度全部设置在一行,或者我必须做这样的事情:
var test = [];
test.length = 4;
Run Code Online (Sandbox Code Playgroud) 有没有办法在javascript中为数组分配默认值?
例如: an array with 24 slots that defaults to 0
根据 ECMAScript,除了其他数据类型之外,还有null和undefined数据类型。但最近我看到了一个叫做empty. 让我们先重新生成它(我将从基本开始):
let a = new Array() //返回[]长度=0
let b = new Array(3) //返回[empty*3]长度=3
let c = new Array(3).fill() //返回[undefined,undefined,undefined]长度=3
怎么办?查看所有定义的元素都是未定义的,它们应该是
a[0]=undefinedb[0]=undefinedc[0]=undefined 主要的东西:如果假设加入到一个元素c在5位即a[5]=4
再c会[undefined,undefined,undefined,empty,4]
这中间的空东西是什么?如果一切都相同,那么开始初始化b和c(我说的是[empty*3]& [undefined,undefined,undefined])有什么区别。
答案建议 [此处]:JavaScrip 数组中的空项和未定义项之间有什么区别?没有正确解释它到底是什么。是的,它不能undefined作为undefined一个值,但怎么样null,如果没有null,为什么空不是数据类型?
我正在尝试创建一个具有定义长度的数组,并用空数组填充它。我已经尝试过使用@stpoa的答案在此处给出的所有可能性,但是我的数组无法正常运行。
给定代码(为示例起见,我对其进行了简化):
const tasksArray = Array(3).fill([])
const tasksArray2 = [[], [], []]
const tasks = ['task1', 'task2']
const fillWithData = (array) => {
tasks.forEach(task => {
array[0].push(task)
})
}
Run Code Online (Sandbox Code Playgroud)
给我一个不正确的输出,tasksArray显然给一个正确的tasksArray2硬编码输出
fillWithData(tasksArray) // [['task1', 'task2'], ['task1', 'task2'], ['task1', 'task2']] => not OK, duplicates values!
fillWithData(tasksArray2) // [['task1', 'task2'], [], []] => that's OK
Run Code Online (Sandbox Code Playgroud)