學習JS的幾個基本函數

1.eval(“字符串”)

語法:

eval(string)

括號裏面的參數是必需的;
這個字符串的含義是:要計算的字符串,其中含有要計算的JavaScript表達式或需要執行的語句。
返回數值:通過計算String得到的值

注意:
該方法只接受原始字符串作爲參數,如果string參數不是原始字符串,那麼該方法將不做任何改變地返回,所以String這個參數不能使用String對象。
如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。

拋出異常的情況:
如果參數中沒有合法的表達式和語句,則拋出 SyntaxError 異常。
如果非法調用 eval(),則拋出 EvalError 異常。
如果傳遞給 eval() 的 Javascript 代碼生成了一個異常,eval() 將把該異常傳遞給調用者。

2.escape(“字符串”)

語法:

escape(string)

參數:必須傳入String;
參數的含義:要被轉義或編碼的字符串

返回值:
已編碼的string的副本,其中某些字符(有可能不是全部)被替換成了十六進制的轉義序列>

注意:
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / 。其他所有的字符都會被轉義序列替換。

可以使用unescape()對escape()編碼的字符進行解碼。

3.unescape(“字符串”)

參數:
這個string參數是必需的;
含義:要解碼或轉義的字符串。

返回值:
string被解碼後的一個副本。

注意:
工作原理:通過找到形式爲%xx和%uxxxx的字符序列(x表示十六進制的數字),用Unicode字符 \u00xx 和 \uxxxx 替換這樣的字符系列進行解碼。

4.parseFloat(string)

這個函數可以解析一個字符串,並返回一個浮點數。
該函數指定字符串中的首個字符是否是數字。如果是,則對字符串進行解析,直到到達數字的末端爲止,然後以數字返回該數字,而不是作爲字符串。

注意:

  1. 字符串中只返回第一個數字。

  2. 開頭和結尾的空格是允許的。

  3. 如果字符串的第一個字符不能被轉換爲數字,那麼 parseFloat() 會返回 NaN。

5.parseInt(numberstring,radix)

定義和用法

parseInt() 函數可解析一個字符串,並返回一個整數。

當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。

當忽略參數 radix , JavaScript 默認數字的基數如下:

1. 如果 string 以 "0x" 開頭,parseInt() 會把 string 的其餘部分解析爲十六進制的整數。
2. 如果 string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字符解析爲八進制或十六進制的數字。
3. 如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

語法:

string:: 必需。要被解析的字符串。
radix :可選;表示需要解析的數字的基數;這個數值的範圍:2 - 36之間。

注意:

  1. 只有字符串中的第一個數字會被返回。
  2. 開頭和結尾的空格是允許的。
  3. 如果字符串的第一個字符不能被轉換爲數字,那麼 parseInt() 會返回 NaN。
  4. 在字符串以"0"爲開始時舊的瀏覽器默認使用八進制基數。ECMAScript 5,默認的是十進制的基數。

isNaN()函數

定義和用法:
isNaN(value) 函數用於檢查其參數是否是非數字值。
如果參數值爲 NaN 或字符串、對象、undefined等非數字值則返回 true, 否則返回 false。

理解與注意點:
需要注意的是,isNaN() 函數其實並不能像它的描述中所寫的那樣,數字值返回 false,其他返回 true。

實際上,它是判斷一個值能否被 Number() 合法地轉化成數字。

這中間有什麼區別呢,主要提現在一些特別的情況如下:

1、數字形式的字符串。例如 “123”、"-3.14",雖然是字符串型,但被 isNaN() 判爲數,返回 false。(“12,345,678”,“1.2.3” 這些返回 true)
2、空值。null、空字符串""、空數組[],都可被Number()合法的轉爲0,於是被isNaN認爲是數,返回false。(undefined、空對象{}、空函數等無法轉數字,返回true)
3、布爾值。Number(true)=1,Number(false)=0,所以isNaN對布爾值也返回false。
4、長度爲 1 的數組。結果取決於其中元素,即:isNaN([a])=isNaN(a),可遞歸。例如isNaN([[“1.5”]])=false。
5、數字特殊形式。例如"0xabc"、“2.5e+7”,這樣的十六進制和科學計數法,即使是字符串也能轉數字,所以也返回false。
可能還有其他情況,一時想不到了。

總之,很多時候不能用單純用 isNaN() 取判斷。

比如一個空值或者數組,甚至是包含字母和符號的字符串,它都有可能告訴你這是數值。還是要結合具體情況使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章