相关疑难解决方法(0)

JavaScript中的(for ... in)和(for ... of)语句有什么区别?

我知道什么是for... in循环(它迭代密钥),但第一次听到for... of(它迭代值).我对for... of循环感到困惑.我没有得到.这是下面的代码:

var arr = [3, 5, 7];
arr.foo = "hello";

for (var i in arr) {
   console.log(i); // logs "0", "1", "2", "foo"
}

for (var i of arr) {
   console.log(i); // logs "3", "5", "7"
    //it is does not log "3", "5", "7","hello"
}
Run Code Online (Sandbox Code Playgroud)

我得到的是,for... of迭代属性值.那么为什么它不记录(返回)"3", "5", "7","hello"而不是"3", "5", "7"?但for... in循环迭代每个键("0","1","2","foo").这里for... in循环也迭代foo密钥.但是对于...不是对foo财产价值的迭代,即"hello"为什么它是这样的?

简而言之:

在这里我控制台 …

javascript arrays object

337
推荐指数
15
解决办法
13万
查看次数

for循环中的变量是一个字符串

我不确定这是否是正常行为,但运行此:

for (var i in [1, 2, 3]) {
    console.log(i + 1);
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

// 01
// 11
// 21
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,为什么var i在这种情况下被视为字符串而不是如果我这样做for (var i = 0; i < [1, 2, 3].length; i++)

javascript for-loop

33
推荐指数
5
解决办法
3785
查看次数

JavaScript数组索引是字符串还是整数?

我有一个关于JavaScript数组的通用问题.JavaScript中的数组索引是否作为字符串内部处理?我读到某处,因为数组是JavaScript中的对象,索引实际上是一个字符串.我对此感到有点困惑,并且对任何解释都很高兴.

javascript arrays indices

14
推荐指数
3
解决办法
9150
查看次数

javascript for循环计数器以字符串形式出现

我把我的程序简化为这个,但它仍然行为不端:

var grid = [0, 1, 2, 3];

function moveUp(moveDir) {
    for (var row in grid) {
        console.log('row:');
        console.log(row + 5);
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎row是一个字符串而不是整数,例如输出

row:
05
row:
15
row:
25
row:
35
Run Code Online (Sandbox Code Playgroud)

而不是5,6,7,8,这是我想要的.for循环中的计数器不应该是一个字符串吗?

javascript string for-loop

9
推荐指数
1
解决办法
722
查看次数

JS映射到数字

我看不到为什么这段代码不产生数字。谁能解释一下?

a = '1 3 2 6 1 2'.split(' ');
a = a.map(Number);

for (item in a){
    console.log(typeof(item));
}
Run Code Online (Sandbox Code Playgroud)

我在Chrome中的输出是6个字符串。

javascript types numbers

6
推荐指数
1
解决办法
7465
查看次数

for(in)循环索引是字符串而不是整数

考虑以下代码:

var arr = [111, 222, 333];
for(var i in arr) {
    if(i === 1) {
        // Never executed
    }
}
Run Code Online (Sandbox Code Playgroud)

它会失败,因为typeof i === 'string'.

这有什么办法吗?我可以显式转换i为整数,但这样做似乎使用simpler for in而不是regular for-loop来破坏目的.

编辑:

我知道==比较使用,但这不是一个选择.

javascript for-loop

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

为什么Array的索引是以下代码中的字符串?

var arrayOfNumbers=[1,2,3,4,5,6,78];
for(var index in arrayOfNumbers){
   console.log(index+1);
}
Run Code Online (Sandbox Code Playgroud)

此示例代码的输出是.
01
11
21
31
41
51
61

为什么在Javascript中这些数组索引被视为字符串?

javascript arrays string indexing

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

为什么"for..in"循环中的数值数组索引的类型被视为字符串?

我注意到在Javascript中,在for..in循环中用作索引的变量将始终是一个string偶数,即使我按以下方式定义它:

var s_array = new Array();
s_array[0] = 'foo';
s_array[1] = 'bar';

for(i in s_array){
 alert(typeof(i)); // String
}
Run Code Online (Sandbox Code Playgroud)

为什么它被认为是一个string而不是一个number

javascript typeof for-in-loop array-key

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

什么时候 for 循环会导致类型强制 javascript?

当我这样做时:

const foo = [0, 1, 2]

for (i = 0; i < foo.length; i ++){
    console.log(foo[i], typeof foo[i])
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

0 number
1 number
2 number
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

0 number
1 number
2 number
Run Code Online (Sandbox Code Playgroud)

我明白了:

0 string
1 string
2 string
Run Code Online (Sandbox Code Playgroud)

这里发生了什么??我需要知道哪些规则才能预测这一点?

编辑:我正在运行 Node 12.18.3

javascript types type-coercion

2
推荐指数
1
解决办法
52
查看次数