2016-07-25 76 views
1

我不明白爲什麼它拋出消息object當我嘗試:

alert(typeof(/\s/))

要再次檢查,我做了一個變化:

alert($.type(/\s/))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我們現在有regexp

所以,我的問題:爲什麼typeof(/\s/)object而不是stringregexp在javascript中?

回答

2

正則表達式是一個「對象」,因爲它是一個對象,就像日期等一樣。 正則表達式是描述字符模式的對象。

如果使用typeofobject,你"object"

一些其他的例子:

typeof []; // "object" 
typeof null; // "object" 
typeof /regex/ // "object" 
typeof new String(""); // "object" 

隨着$.type

如果參數可以是一個原始值或標準的實例內置的ECMAScript對象,[[Class]]內部屬性用於確定類型。

例子:

jQuery.type(/test/) === "regexp" 

Documentation on $.type

+0

你的意思是:'不要使用typeof運算來檢查任何變量的類型,因爲它是不正確exactly',不是嗎? –

+0

@HappyCoding我的意思是,如果你比較像一個字符串,並且想檢查它是否是一個正則表達式,那麼使用'$ .type'。顯然'typeof'可以和其他東西一起使用。檢查他們的使用情況並使用適合您需求的產品 –

+0

非常感謝!你可以編輯鏈接'$ .type'而不是'$ .test' :) –

相關問題