2017-08-17 51 views
0

我在單個.js文件上有2 functions當其他功能調用時,功能無法控制檯日誌記錄

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不得到記錄(顯然NOTUSED功能不全)。但是,如果我將每個function與我的網頁分開呼叫,則會登錄IDfalse。我該如何修復或解決此問題?任何評論幫助。

+0

它對我有效 –

+0

@Dij獲取日誌的ID只是一個隨機ID,帶有單個字符和7位 –

+0

@MarcoSalerno從網頁上的腳本標記中調用generateID()時? –

回答

2

邏輯和短路,因爲第一次比較是錯誤的。第二個從來沒有得到評估,這就是爲什麼它不記錄。它沒有被調用。

+0

如果可能,我該如何解決? –

+0

@NickPavini您可能希望使用'||'而不是'&&' –

+0

好,如果目的是驗證生成的ID未被其他用戶使用,那麼只調用'notUsed'。你寫的代碼會保證'idNum'的長度爲8個字符,我不認爲你需要這個檢查。 –

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