javascript
  • variables
  • typescript
  • 2016-03-03 22 views 0 likes 
    0

    我有以下的打字稿文件 - >申報VAR得到的ReferenceError:......沒有定義

    module someModule { 
    declare var servicePort: string; 
    
    export class someClass{ 
    constructor(){ 
        servicePort = servicePort || ""; //ERROR= 'ReferenceError: servicePort is not defined' 
    } 
    

    也試圖在這裏面「SomeClass的」功能之一 - >

    someFunction =() => { 
        if (servicePort && servicePort != '') { //ERROR - also servicePort is not defined 
          //do something with servicePort 
         } 
    } 
    

    如果我在我的JS/HTML文件的某處定義VAR SERVICEPORT它會工作,但不是我的所有網頁包含SERVICEPORT VAR,我想安全得到來自varible值無異常。 我在做什麼錯?

    +0

    首先,它是「嚴格使用」;'。 – Nonemoticoner

    +0

    我試過刪除它,仍然行爲相同 –

    +0

    如果您將此TypeScript代碼編譯爲JavaScript,您將會看到'declare'在實際代碼中沒有效果。 – Nonemoticoner

    回答

    3

    具有可變有時被定義,有時不能是一個相當大的代碼味道,但如果你真的要做到這一點,你需要警惕的變量訪問與typeof

    if (typeof servicePort !== "undefined") { 
        // safe to use servicePort here 
    } 
    

    注你將無法區分缺失的變量與值undefined之間的差異,但這就是生活。

    +0

    好吧,似乎下降足夠的解決方案,我會測試它@Sunday。我知道,僅在某些頁面上使用此var不是「最佳做法」,您能否提出一種替代方案?我有一些使用servicePort的頁面,有些則沒有。我可以在我的主佈局上放置'var servicePort ='「''',但我擔心這一點。你能想到一個想法嗎? –

    相關問題