2012-11-10 176 views
1

我有一個問題,我的代碼顯然..類型錯誤,變量未定義

function match2(string,pattern){ 
var patternUpper = pattern.toUpperCase(); // Change pattern to uppercase 
var stringUpper = string.toUpperCase(); // Change string to uppercase 
    for(var i=0;i<stringUpper.length-1;i++){ 
     if(stringUpper.indexOf(patternUpper.charAt(i))<0) 
     return false; 
    } 
    return true; 
} 

不知道爲什麼Firefox的調試器說:「模式是不確定的」,看到它在函數中定義的,正確的?

任何幫助,非常感謝。

Liam

編輯:它也這樣做的字符串。如果我註釋掉該代碼段的第二行,則說「字符串未定義」。

MATCH2正在這裏稱爲:

alert(match2("thisisatest","ahtsit")); 

結果按預期工作,但問題是導致錯誤在我的計劃,我認爲進一步下跌。

+0

你可以發佈你打電話給match2的代碼嗎? – Ankur

+0

我假設你沒有向match2傳遞第二個參數,因此'pattern.toUpperCase()'會拋出一個錯誤。符號'pattern'將會存在,但是如果你不傳遞參數,它的值將是'undefined'。 –

+0

它正在工作見http://jsfiddle.net/nKpce/ – Anoop

回答

0

,如果你沒有通過第二個參數或第二個參數是不確定的,只能發生

1

"pattern"參數是不確定的,無論在哪個瀏覽器,這意味着什麼是錯與調用該函數並且您需要在函數內部前一步檢查調用堆棧,並在傳遞參數時查看那裏發生了什麼。 (順便說一下,不要使用關鍵字或類名來命名變量,我的意思是變量名爲"string"

希望它有幫助。

乾杯

+0

thx。在我的情況下,函數調用出了問題,必須傳遞一個對象而不是字符串 – xperator