Discuss / JavaScript / 请问for块级作用域的 I 变量为什么不会自增了???

请问for块级作用域的 I 变量为什么不会自增了???

Topic source

alienation

#1 Created at ... [Delete] [Delete and Lock User]

function get_primes(arr) {

var f = function(e){

    if (e == 1 || e == 0){

        return false

    }

    for (var i=2; i<=e; i++){

        console.log(i,e)

        if (e % i === 0){

            return false

        }

        return true

    }

}

return arr.filter(f)}

这里黑体表示的循环,console部分的实际输出是 

2 2

2 3

2 4

2 5

。。。

为什么只有变量e在增加,而 i 变量不会自增了呢???这样子函数就变成去除偶数了。。。

alienation

#2 Created at ... [Delete] [Delete and Lock User]

看懂了,又是把}写错位置了,本来{return true}应该再for循环的作用域之外的,写在里面导致了一个循环就会把f函数给return了,直接拿下一个e为参数开始f函数了

js真的好麻烦


  • 1

Reply