相关疑难解决方法(0)

JavaScript与Java中数组中的非初始化项有什么区别?

我刚刚玩JavaScript并且遇到了一个简单的程序.

我用JavaScript声明了一个数组

var a = [0, 1, 2];
Run Code Online (Sandbox Code Playgroud)

然后由于JavaScript中的数组没有固定的大小,我们可以向数组中添加更多,我向数组添加了另一个整数.

a[3] = 3;
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,如果我试图访问,a[4]我肯定会得到它undefined.

现在,如果我拿一个数组

var a = [0,1,2];
Run Code Online (Sandbox Code Playgroud)

并添加另一个元素

a[4] = 4;
Run Code Online (Sandbox Code Playgroud)

我故意没有定义a[3],而这也给了我a[3]作为undefined.

这是一个可以观察到的小提琴:http://jsfiddle.net/ZUrvM/

现在,如果我在Java中尝试相同的事情,

int[] a = new int[4];
a[0] = 0;
a[1] = 1;

a[3] = 3;
Run Code Online (Sandbox Code Playgroud)

然后我结束了

a[2] = 0;
Run Code Online (Sandbox Code Playgroud)

你可以在ideone上看到这个:https://ideone.com/WKn6Rf

我发现Java的原因是在声明数组时定义了四个变量,我们只能为声明的数组大小赋值.但是在JavaScript中,当我声明一个大小为3的数组然后添加第5个元素时,为什么它不考虑第4个元素,null或者0我们是否将数组大小增加到4以上?

为什么我在JavaScript中看到这种奇怪的行为,而在其他语言中却看不到?

javascript java arrays

20
推荐指数
1
解决办法
877
查看次数

JavaScript'in'运算符用于Arrays中的`undefined`元素

请考虑以下代码段:

> a = [1, undefined, undefined, undefined, 3]
  [1, undefined, undefined, undefined, 3]
> b = [1,,,,3]
  [1, undefined × 3, 3]
> 1 in a
  true
> 1 in b
  false
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?似乎是,根据我undefined在数组中定义元素的方式,in运算符的行为会有所不同.

javascript arrays

18
推荐指数
1
解决办法
1264
查看次数

[undefined]和[,]之间有什么区别?

可能重复:
JavaScript中的"undefined x 1"是什么?

在Chrome 21中,[,]输入控制台输出

[undefined x 1]

并提供[undefined]输出

[未定义]

[undefined]和之间有什么区别[undefined x 1]

符号是什么[undefined x 1]

javascript

8
推荐指数
2
解决办法
293
查看次数

JavaScrip数组中的空项与undefined之间的区别是什么?

考虑以下JavaScript代码(在节点REPL中):

> let a = new Array(10)
undefined
> a
[ <10 empty items> ]
> a.map(e => 1)
[ <10 empty items> ]
> let b = new Array(10).fill(undefined)
undefined
> b
[ undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined ]
> b.map(e => 1)
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
> 
Run Code Online (Sandbox Code Playgroud)

当我创建一个空数组时,我会得到"空项",它们的行为似乎与之不同undefined.有人能解释一下有什么区别吗?

javascript arrays undefined

6
推荐指数
2
解决办法
773
查看次数

使用 Array.every() 函数检查是否定义了所有值

我试图检查我的所有值是否都在我的数组中定义。我的代码如下

\n\n
var check = function (item){return item !== undefined;};\n\n\narray.every(check);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在以下数组上尝试过:

\n\n
var array = [];\narray[5] = 0; //[undefined \xc3\x97 5, 0]\narray.every(check); //return true although there are 5 udefined values there\n
Run Code Online (Sandbox Code Playgroud)\n\n

我究竟做错了什么?

\n

javascript arrays

5
推荐指数
1
解决办法
3138
查看次数

JavaScript:为什么这两个看似等效的程序的控制台输出略有不同?

这个程序:

 var arr = [];
    arr[100] = "foo";
    console.log(arr);
Run Code Online (Sandbox Code Playgroud)

输出:

(101) [undefined × 100, "foo"]
Run Code Online (Sandbox Code Playgroud)

但是,这个程序:

var arr = [];
for(var i = 0; i < 101; i++) {
arr[i] = (i === 100 ? "foo" : undefined);
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)

输出这个("foo"当然最终有):

(101) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, …
Run Code Online (Sandbox Code Playgroud)

javascript

4
推荐指数
1
解决办法
57
查看次数

为什么删除后数组的长度仍为非零?

我有以下代码输出数组的长度,删除它,然后输出新的长度:

console.log($scope.adviceList.activeAdvices.length); // *1*
$scope.adviceList.activeAdvices.splice(id,1); // *id is a parameter*
console.log($scope.adviceList.activeAdvices.length); // *0*

console.log($scope.adviceList.activeAdvices.length); // *1*
delete $scope.adviceList.activeAdvices[id];
console.log($scope.adviceList.activeAdvices.length); // *0*
console.log($scope.adviceList.activeAdvices); // *[]*
Run Code Online (Sandbox Code Playgroud)

删除后,数组正确显示为空.然而,它的长度仍然是1.

javascript arrays

3
推荐指数
1
解决办法
4023
查看次数

标签 统计

javascript ×7

arrays ×5

java ×1

undefined ×1