標籤:tostring 算數 保留字 否則 script throws 轉義 ref 間接
1、encodeURI(URI)
a、作用:是對統一資源識別項(URI)進行編碼的方法;
b、參數:是一個完整的URI;
c、特點:不需要對保留字以及在URI中有特殊意思的字元進行編碼。
(1)、保留字元:; , / ? : @ & = + $
(2)、非逸出字元:字母 數字 - _ . ! ~ * ‘ ( )
(3)、數學符號:#
2、decodeURI(encodedURI)
a、作用:解碼由encodeURI或者類似方法編碼的統一資源識別項(URI);
b、參數:一個完整編碼過的URI;
c、特點:將已編碼 URI 中所有能識別的逸出序列轉換成原字元,但不能解碼那些不會被 encodeURI 編碼的內容(例如 "#")。
3、encodeURIComponent(str)
a、作用:是對統一資源識別項(URI)組成部分進行編碼的方法;
b、參數:String.URI的組成部分;
c、特點:轉義除了字母、數字、(、)、.、!、~、*、‘、-和_之外的所有字元。
4、decodeURIComponent(encodedURI)
a、作用:解碼由encodeURIComponent或者類似方法編碼的統一資源識別項(URI);
b、參數:編碼後的部分URI;
c、特點:將已編碼 URI 中所有能識別的逸出序列轉換成原字元。
5、eval(str)
a、作用:將傳入的字串當做javascript執行;
b、參數:字串,需要計算的運算式或者執行的語句;
c、傳回值:代碼執行後的傳回值,否則為undefined;
d、特點:(1)、如果參數不是字串,原封不動的返回;(2)、直接調用,使用的是當前範圍, 間接調用,使用的是全域範圍。
eval(new String("2 + 2")); // 返回了包含"2 + 2"的字串對象eval("2 + 2"); // returns 4function test() { var x = 2, y = 4; console.log(eval("x + y")); // 直接調用,使用本地範圍,結果是 6 var geval = eval; console.log(geval("x + y")); // 間接調用,使用全域範圍,throws ReferenceError 因為`x`未定義}
6、isFinite(testVal):類似於Number.isFinite(testVal)
a、作用:判斷testVal是否為一個有限的值;
b、參數:傳入字串,會轉換成數字再判斷。注意:Number.isFinite(testVal)不會轉換類型。
c、傳回值:true/false;
isFinite(Infinity); // falseisFinite(-Infinity); // falseisFinite(0); // trueisFinite(2e64); // trueisFinite("0"); // trueisFinite(NaN); // falseisFinite(null); // trueisFinite(undefined); // falseisFinite(true); // trueisFinite(false); // trueNumber.isFinite(Infinity); // falseNumber.isFinite(-Infinity); // falseNumber.isFinite(0); // trueNumber.isFinite(2e64); // trueNumber.isFinite("0"); // falseNumber.isFinite(NaN); // falseNumber.isFinite(null); // falseNumber.isFinite(undefined); // falseNumber.isFinite(true); // falseNumber.isFinite(false); // false
7、isNaN( testVal )
a、作用:判斷一個值是否是NaN,將參數強制轉換成數字再進行判斷。
b、傳回值:true/false
c、特點:(1)、NaN不能通過==和===來判斷,NaN == NaN 和 NaN === NaN 都返回false;(2)、算數運算得到無法表示或未定義的值時,為NaN;(3)、不能強制換行成數字時,為NaN;(4)、0除以0會返回NaN —— 但是其他數除以0則不會返回NaN。
escape(),unescape():已經放棄使用。
d、注意:通過Number.isNaN(x)來檢測變數x是否是一個非數值將會是一種可靠的做法。然而,在缺少Number.isNaN函數的情況下, 通過運算式(x != x) 來檢測變數x是否是NaN會更加可靠。
isNaN = function(value) { Number.isNaN(Number(value));}isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // trueisNaN(0 / 0); // trueisNaN(5 / 0); // falseisNaN(true); // falseisNaN(null); // falseisNaN(37); // falseisNaN("37"); // false: 可以被轉換成數值37isNaN("37.37"); // false: 可以被轉換成數值37.37isNaN(""); // false: Null 字元串被轉換成0isNaN(" "); // false: 包含空格的字串被轉換成0isNaN(new Date()); // falseisNaN(new Date().toString()); // trueisNaN("blabla") // true: "blabla"不能轉換成數值//和全域函數 isNaN() 相比,該方法不會強制將參數轉換成數字,只有在參數是真正的數字類型,且值為 NaN 的時候才會返回 true。Number.isNaN(NaN); // trueNumber.isNaN(undefined); // falseNumber.isNaN({}); // falseNumber.isNaN(0 / 0); // trueNumber.isNaN(5 / 0); // falseNumber.isNaN(true); // falseNumber.isNaN(null); // falseNumber.isNaN(37); // falseNumber.isNaN("37"); // false: 不可以被轉換成數值37Number.isNaN("37.37"); // false: 不可以被轉換成數值37.37Number.isNaN(""); // false: 不Null 字元串被轉換成0Number.isNaN(" "); // false: 不包含空格的字串被轉換成0Number.isNaN(new Date()); // falseNumber.isNaN(new Date().toString()); // falseNumber.isNaN("blabla") // false: "blabla"不能轉換成數值
8、null 和 undefined
a、null:javascript字面量,javascript原始值之一,表示空值,不是全域對象的屬性
b、undefined:javascript原始值之一,是javascript的未經處理資料類型,是全域對象的屬性
typeof null // object (因為一些以前的原因而不是‘null‘)typeof undefined // undefinednull === undefined // falsenull == undefined // truenull === null // truenull == null // true!null //trueisNaN(1 + null) // falseisNaN(1 + undefined) // true
9、parseInt 和 parseFloat
a、parseInt:返回一個整數
b、parseFloat:返回一個浮點數
javascript全域方法