對不起,這個簡單的問題。我有這個功能:可以使用相同的函數參數接受不同的數據類型嗎?
function(var1){
var myString =var1;
// myString is parsed for integers
}
是否需要總是以字符串的形式調用參數?例如
function("23")
或者我可以安全地混合搭配嗎?例如
function(23);
function("string with number 23");
對不起,這個簡單的問題。我有這個功能:可以使用相同的函數參數接受不同的數據類型嗎?
function(var1){
var myString =var1;
// myString is parsed for integers
}
是否需要總是以字符串的形式調用參數?例如
function("23")
或者我可以安全地混合搭配嗎?例如
function(23);
function("string with number 23");
是的,你可以通過不同的數據類型,如JavaScript是動態類型語言。 如果您想要取決於數據類型的不同行爲,則可以使用instanceof
。
像這樣:
function f(var1) {
if(var1 instanceof String) {
// handle strings
} else if(var1 instanceof Object) {
// handle objects
} else if(var1 instanceof Date) {
// handle dates
}
}
這也可以用於過濾/驗證輸入數據。
更新:請注意@ jakeclarkson對instanceof
和typeof
運營商之間的區別的評論。
謝謝。這是完美的。我打算使用typeOf,但instanceOf看起來更好。 – 2011-12-21 16:43:09
請注意,這不適用於「字符串」文字,例如''一個字符串「instanceof String'將返回'false',而'new String(」string「)instanceof String'將返回'true'。這是一個[示例](http://jsfiddle.net/jakeclarkson/32shh/)。 – jabclab 2011-12-21 16:47:47
+1 to @jakeclarkson。 'instanceof'和'typeof'類似但不一樣。它們的用法取決於項目體系結構和問題的類型。我會在最初的回覆中提到這個評論。 – Minras 2011-12-21 17:01:57
您可以將任何您想要的數據類型傳遞給函數。這很重要,你如何使用參數。
非常感謝。我只需要確保 - 因爲並非每個瀏覽器都是一樣的。 – 2011-12-21 16:40:06
只要您的整數解析器設置爲與混合使用,就可以進行混合和匹配。
如果你希望這個數字是一個整數,並且不要將某些數學運算放在語音標記中,那麼你可以使用這種方法。
如果你傳遞一個數字作爲一個字符串,你可以使用百達
parseInt("string");
簡短的回答:是
龍答:類型檢查是在JavaScript中一個真正的痛苦。如果開始嘗試區分數組和對象,這隻會變得更加困難。
我會用它可以發現here
然而Crockford的TYPEOF功能,如果你只打算在傳遞字符串或數字本應該做的:
function (var1) {
if (typeof var1 === "number"){
//treat it like a number
} else if (typeof var1 === "string") {
//try to parse it
} else {
//Its neither a string nor a number
}
}
JavaScript是動態類型...也許時間從一本好書開始? – 2011-12-21 16:27:40
你能告訴我們什麼是功能? – kapa 2011-12-21 16:30:08
@Kerrek:我讀過的最後一個在線指南說要傳遞正確的數據類型。我認爲這只是一種良好的習慣,而不是語言所要求的,這就是你給予的原因。但我需要確保。 – 2011-12-21 16:33:52