相关疑难解决方法(0)

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
查看次数

为什么Object.keys返回的是字符串数组而不是Numbers数组

当我运行以下代码时

var obj = { 0: 'a', 1: 'b', 2: 'c' };
typeof Object.keys(obj)[0] //returns string
Run Code Online (Sandbox Code Playgroud)

obj对象我正在创建数字键.

任何原因,为什么它的字符串而不是number

javascript

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

为什么Javascript数组索引最多为4294967294而不是4294967295?

Javascript的索引是32位,所以似乎数组索引应该能够达到4294967295,共计4294967296个元素.但实际上最高的索引是4294967294.由于数组有一个length属性,我没有看到将null作为最后一个元素的原因.有没有理由最大指数是4294967294而不是4294967295?

javascript

13
推荐指数
2
解决办法
1693
查看次数

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
查看次数

迭代值时,为什么当value是数字时,typeof(value)会返回"string"?使用Javascript

我正在使用Google Chrome进行此测试:与直觉相反,第一个循环警告"字符串"3次,而第二个循环警告"数字"3次.

numarray = [1, 2, 3];

//for-each loop
for(num in numarray) 
    alert(typeof(num));

//standard loop
for(i=0; i<numarray.length; i++) 
    alert(typeof(numarray[i]));
Run Code Online (Sandbox Code Playgroud)

我期待两个循环警告"数字"3次.如何在Javascript中实现第一个循环?换句话说,如果for-each是语法糖,使用标准循环的等价物是什么?

另外,有没有办法使用标准循环迭代对象的命名空间?我希望使用第二种循环来触摸某些对象的方法和属性中的每一个.我是Javascript的新手,非常感谢任何帮助,谢谢.

javascript foreach typeof

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

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...in 循环中的变量是字符串?

我使用 for...in 循环来记录值,我注意到 for...in 循环中的变量(i在这种情况下为 )是一个字符串。

for (var i in ['a', 'b', 'c']) {
  console.log(i, typeof i)
}
Run Code Online (Sandbox Code Playgroud)

我在标题为“for-in、for-of 和 for-await-of 语句”的部分搜索了ECMAScript 规范,以获取有关此内容的任何信息,但找不到任何有关此内容的信息。

我的问题是,规范中是否有关于此的任何内容,如果没有,为什么它是一个字符串?

javascript loops language-specifications for-in-loop

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

什么时候 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
查看次数

JavaScript 中是否存在数组/列表?

我想了解 JavaScript 中是否存在列表/数组而不是类似数组的对象。如果有一些关于这方面的资源或信息,我会很高兴。

所以根据我的理解,JavaScript 中的数组只是对象,数组的索引是对象中的键。但是对象的哈希映射正确吗?在这种情况下,哈希映射采用一个键,将其哈希到索引,然后将该值存储在列表/数组中的索引处。这样,如果我们需要访问对象中的键,我们可以轻松地散列键并在常数时间内访问数组以访问值。但是 JavaScript 中并不真正存在数组,那么 JavaScript 中是否存在一些我们无法访问的类似数组/列表的数据结构呢?

javascript arrays hashmap javascript-objects

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