JavaScript 中有兩種型別轉換:隱式型別轉換和顯式型別轉換,
隱式型別轉換指 JavaScript 在運行時自動將一種型別轉換為另一種型別,例如,在數學運算中,JavaScript 會將字串轉換為數字,
顯式型別轉換指在代碼中使用內置函式或全域物件將一種型別顯式地轉換為另一種型別,例如,使用 Number() 函式將字串轉換為數字,使用 String() 函式將數字轉換為字串,
另外,JavaScript 還提供了一些常用的型別轉換函式,如 parseInt() 和 parseFloat() 用于將字串轉換為整數和浮點數,
還有一些其它的方法來進行型別轉換,如:
- 使用
+運算子將字串轉換為數字 - 使用
valueOf()方法將物件轉換為原始型別 - 使用
toString()方法將數字、布林值、物件轉換為字串
需要注意的是,在 JavaScript 中使用 == 運算子進行比較時會發生隱式型別轉換,而使用 === 運算子進行比較時不會發生型別轉換,所以在比較值的相等性時建議使用 === 運算子,
需要注意的是,JavaScript 的型別轉換有一些需要特別注意的地方:
- 當一個值被賦值給另一個變數時,它會被隱式地轉換為該變數的資料型別,
- 當一個值用于布爾運算時,它會被隱式地轉換為布林值,
- 當一個值用于數學運算時,它會被隱式地轉換為數字,
- 當一個值被作為字串連接時,它會被隱式地轉換為字串,
- 當一個值被作為物件的屬性時,它會被隱式地轉換為字串,
以下是一些 JavaScript 型別轉換的示例:
1、隱式型別轉換:
let num = "42";
console.log(num + 2); // "422"
2、顯式型別轉換:
let num = "42";
console.log(Number(num) + 2); // 44
3、parseInt() 和 parseFloat() 函式轉換:
console.log(parseInt("42", 10)); // 42
console.log(parseFloat("3.14")); // 3.14
4、toString() 函式轉換:
console.log((42).toString()); // "42"
console.log((true).toString()); // "true"
5、布林值轉換:
console.log(Boolean(0)); // false
console.log(Boolean("hello")); // true
6、運算子轉換:
console.log(+"42") // 42
7、使用 Object() 函式將原始型別轉換為物件:
console.log(typeof Object(42)); // object
8、使用 Symbol() 函式將字串轉換為 Symbol 型別:
console.log(typeof Symbol("hello")); // symbol
9、使用 JSON.parse() 和 JSON.stringify() 函式將字串轉換為物件和物件轉換為字串:
let jsonString = '{"name":"John","age":30}';
let obj = JSON.parse(jsonString);
console.log(obj); // { name: 'John', age: 30 }
let jsonString2 = JSON.stringify(obj);
console.log(jsonString2); // '{"name":"John","age":30}'
需要注意的是,上述型別轉換方式需要滿足一定的條件,需要注意資料的合法性,如 JSON.parse() 和 JSON.stringify() 方法只能決議和序列化 JSON 格式的字串,
還有一些需要注意的地方:
-
當使用 parseInt() 和 parseFloat() 方法將字串轉換為數字時,如果字串不符合數字格式,則會回傳 NaN,因此需要使用 isNaN() 函式判斷轉換結果是否為 NaN,
-
當使用 JSON.parse() 方法將字串轉換為物件時,如果字串不符合 JSON 格式,則會拋出錯誤,
-
當使用
Symbol()函式將字串轉換為 Symbol 型別時,在內部存盤的是一個符號,不是字串,因此,當比較兩個 Symbol 型別的值時,它們只有在記憶體中的地址相同時才相等, -
當使用
Object()函式將原始型別轉換為物件時,會創建一個包裝物件,因此,在使用包裝物件時需要注意包裝物件和原始值之間的差異,
在使用型別轉換時,需要根據實際需求進行選擇,并且要注意隱式型別轉換的影響,
作者:yuzhihui出處:http://www.cnblogs.com/yuzhihui/ 宣告:歡迎任何形式的轉載,但請務必注明出處!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/542398.html
標籤:其他
上一篇:JavaScript 陣列去重
下一篇:前端面試題學習-個人總結
