我的咖啡脚本中有这个for循环:
compareVersions = (current, minimum) ->
console.log('current ', current)
console.log('minimum ', minimum)
current_parts = current.split '.'
minimum_parts = minimum.split '.'
for partIndex in [0..Math.min(current_parts.length, minimum_parts.length)]
console.log('partIndex ', partIndex)
if (+current_parts[partIndex] || 0) < (+minimum_parts[partIndex] || 0)
console.log('current_parts.length1 ', current_parts[partIndex])
console.log('minimum_parts.length1 ', minimum_parts[partIndex])
return false
console.log('PC current_parts.length2 ', current_parts[partIndex])
console.log('PC minimum_parts.length2 ', minimum_parts[partIndex])
true
它旨在比较软件版本,如果当前版本低于最低版本,则返回false。
我添加了console.log
以显示正在发生的事情。
这是我得到的输出。在这种情况下,当前版本比最小版本高,但是if语句仅在索引2上执行,在这种情况下,当前版本的索引号比最小版本小。
current 3.4.1.35
minimum 3.3.3
partIndex 0
partIndex 1
partIndex 2
current_parts.length1 1
minimum_parts.length1 3
if语句应在for循环的每次迭代中执行。这是什么在阻止这种情况?
答案 0 :(得分:1)
if语句在for循环的每次迭代中都在执行,但是当if语句为true时,将打印current_parts.length1和minimum_parts.length1。
if语句的执行将是:
3 < 3 false
4 < 3 false
1 < 3 true
print current_parts.length1
print minimum_parts.length1
如果要显示current_parts.length1和minimum_parts.length1,请将它们放在if语句之外,以便在执行if语句时可以看到这些值。