当其他功能调用时,功能不是控制台记录

时间:2017-08-17 14:49:13

标签: javascript

我在2 functions个文件上有.js

function notUsed(id) {
        //default to false because if true then id not being used and good for new user
        var notInUse = false;

        console.log(notInUse);
        return !notInUse;   
    }

function generateID() {

        //number of zeros represents the number of digits in id code
        const SIZEOFID = 10000000;
        const ID_DIGITS = 7;
        //letter to start id for non los rios people
        const STRTOFID = "C";
        //variable to hold finished id code & variable to hold 7 digit of id code
        var id, idNum;

        //loop to make sure id contains 7 digits and 1 letter and not used already
        do {
            idNum = Math.round(Math.random() * SIZEOFID);
            idNum.toString();
            id = (STRTOFID + idNum);
        }while(id.length != (ID_DIGITS+1) && notUsed(id));
        console.log(id);
    }

当我从网页上调用generateID()时,ID会被记录,但false未被记录(显然未使用的功能不完整)。但是,如果我将每个function与我的网页分开调用,则IDfalse都会被记录。我该如何解决或解决这个问题?任何评论都有帮助。

2 个答案:

答案 0 :(得分:2)

逻辑和短路是因为第一次比较是错误的。第二个永远不会被评估,这就是为什么它没有记录。它没有被召唤。

答案 1 :(得分:1)

发生这种情况是因为id.length!=(ID_DIGITS + 1)中的第一个条件返回false,如果第一个条件返回false则不会调用下一个条件

示例

function imreturnTrue() {
  console.log('imreturnTrue');
  return true
};

function impreturnFalse() {
   console.log('impreturnFalse');
   return false
};

function imreturnTrue1() {
    console.log('imreturnTrue1');
    return true
};
let example = imreturnTrue() && impreturnFalse() && imreturnTrue1();
// imreturnTrue impreturnFalse

let example1 = imreturnTrue() && imreturnTrue1() && impreturnFalse() ; 
// imreturnTrue imreturnTrue1 impreturnFalse

let example2 = impreturnFalse() && imreturnTrue() && imreturnTrue1() ; 
// impreturnFalse