用于循环条件和最终表达式

时间:2015-08-10 01:52:26

标签: javascript

我从codefights获得了这个代码,而且我没有条款去谷歌这个代码实际上做了什么。这个函数的作用是得到传递给参数(a,b)的2个数之间的素数之和。

这是工作代码..

function Prime_sum(a, b){
    for(s=0; b>=a; s += b--*!c)
        for(c=b-1; b%c--; );
    return s
}

它给我一些问题,比如;

  1. 使用's = 0'而不是'var s = 0'之间有什么不同?
  2. s + = b - *!c 做什么?不应该抛出错误,因为 c 没有声明?
  3. 如果删除第二个循环上的最后一个分号,它将不再起作用。那是为什么?
  4. 如果你在第一个循环中看到'b> = a',那么'b< a'使循环结束?
  5. 编辑: 忽略我的问题并向我解释此代码实际按顺序执行的操作。

    如果标题没有正确设置为我的问题,我很抱歉。

2 个答案:

答案 0 :(得分:2)

我会拍摄:

  1. s = 0使s成为全局变量
  2. 将其视为(b - )*!c // c:true = 1,false = 0
  3. 缺少分号会占用下面的语句并使其成为第二个循环的一部分
  4. 希望有所帮助。

答案 1 :(得分:0)

第四个是 如果你看到' b> = a'在第一个循环中,哪个部分使' b<一个'这会使循环结束吗?

它的

// gulp.js

var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var fs = require("fs");
var arrayFiles = new Array();
gulp.task('compressAllPlugins', function(done) {
    fs.readFile('path/to/config.php', {encoding: 'utf-8', flag: 'rs'}, function(e, data) {
        if (e) return console.log(e);
        // codes to process content and convert it into array
        // arrayFiles.push(eachData);
    }
    console.log('arrayFiles: ',arrayFiles);
    gulp.src(arrayFiles)
    .pipe(plugins.uglify().on('error', standardHandler))
    .pipe(concat('myplugins.min.js'))
    .pipe(gulp.dest('public/app'))
    .on('end', done); 
    });
});

所以每次b减少1,这使得这个条件满足。