JavaScript規定了幾種語言型別
前言
首先我們來了解下javascript是什么,這里參考百度百科的說法
JavaScript(簡稱“JS”) 是一種具有函式優先的輕量級,解釋型或即時編譯型的編程語言,雖然它是作為開發Web頁面的腳本語言而出名,但是它也被用到了很多非瀏覽器環境中,JavaScript基于原型編程、多范式的動態腳本語言,并且支持面向物件、命令式和宣告式(如函式式編程)風格
切入正題
ps:檢測資料型別的運算子typeof
undefined:未定義,【基本型別】
// 宣告了但未定義值
let a;
console.log(a); // undefined
typeof(a); // "undefined"
ps:為什么有的編程規范要求使用void 0來代替undefinded,因為undefined在javascript中是一個變數,而不是一個關鍵字,新版谷歌和ie8+的瀏覽器undefined無法被重新賦值,
number:數字,【基本型別】
// 數字型別,最大安全整數是2 ** 53 -1,即9007199254740991,大于這個值可能會失去精度
let a = 9007199254740991;
let b = 90071992547409911;
let c = NaN; // NaN是特殊的number型別
console.log(a); // 正常顯示9007199254740991
console.log(b); // 失去精度
typeof(a); // "number"
typeof(c); // "number"
string:字串,【基本型別】
// 字串型別
let a = '變數';
typeof(a); // "string"
boolean:布林值,true或者false,表示邏輯上的真和假,【基本型別】
// 布林值型別
let a = true;
typeof(a); // "boolean"
null:空值,【基本型別】
// 空值
let a = null;
symbol: 獨一無二的值,【基本型別】
// 獨一無二的值
let a = Symbol("name");
console.log(a);// Symbol(name)
typeof(a);// "symbol"
// 相同引數 Symbol() 回傳的值不相等
let b = Symbol("name");
a === b;// false
ps:es6 中新引入的型別,表示獨一無二的值,最大的用法是用來定義物件的唯一屬性名,
symbol作為屬性名,是公有屬性,無法被Object.keys()回圈獲取,可以通過 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到
let obj = {};
obj[Symbol('a')] = "name";
console.log(obj);
for (let key in obj) {
console.log('key:'+key);
}// 無輸出
Object.keys(obj);// []
Object.getOwnPropertySymbols(obj);// [Symbol(a)]
Reflect.ownKeys(obj);// [Symbol(a)]
bigInt: 大整數【基本型別】
// 大整數,為解決超過最大整數的數字精度問題
let a = 111n
typeof(a);// "bigint"
ps:es10新增的基本型別
object:物件,包含function,array,date等【參考型別】
let a = [];
let b = {};
let c = ()=>{};
typeof(a); // object
typeof(b); // object
typeof(c); // object
ps:文末附上匯總文章鏈接《一名【合格】前端工程師的自檢清單【持續更新】》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287237.html
標籤:其他
