這篇文章帶給大家的內容是關於JavaScript資料類型的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
最近面試了三個開發,他們都沒有說清楚JS的基本類型有哪些。而且常常錯誤的說了一些C語言的資料型別,例如int, float, double之類的資料型態。
無論什麼語言,熟練資料型別都是這門語言最根本的知識點
JS資料型別分為兩類,一類是基本型,他們有
js的基本型別就這麼幾個,除此之外,其他的型別都是物件。
Number型別
在JS沒有整數,float,或是double型別的數值,所有數值統一叫做Number型別。
JS使用IEEE754格式表示整數和浮點數,一般來說整數佔用了32位,而浮點數數佔用64位。因為浮點數佔用的記憶體空間是整數的兩倍,所以js會適當的把浮點數轉換成整數儲存。
4.0 === 4 // true
數值類型都是有大小範圍的
Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324 Number.MAX_SAFE_INTEGER // 9007199254740991 Number.MIN_SAFE_INTEGER // -9007199254740991
浮點數一般都是計算結果不準確的,這不是JS的問題,所有語言中都有這個問題。
計算0.1 0.2 === 0.3
這個結果永遠是false。
要比較浮點數是否相等,可以採用Number.EPSILON
, Number.EPSILON是一個非常小的數值,如果兩個浮點數相減少小於Number.EPSILON, 則可以為認為相等。
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
Number類型中有三個比較特殊的兄弟
數值類型一旦變成這三個兄弟,就無法參與後續的數值運算。
String類型
從靜態語言過來的同學,遇到字串就會問個問題:請問你能裝多少個字串呢?
字串傻傻一笑,說:自從我誕生以來,從來就沒被裝滿過!
ECMAScript 2016 (ed. 7) established a maximum length of 2^53 - 1 elements. Previously, no maximum length was specified. In Firefox, strings have a maximum length of 230 - 2 (~1GB). In versions prior to Firefox 65, the maximum length was 2##28 - 11 ~256MB). --MDNBooleanBoolean值很簡單,就false和true兩個值。但是很多人不能完全回答出,哪些值會被轉換成false。 除了下面幾個能夠被轉換成false的值,其他都是true。
false '' NaN undefined 0, -0, +0 nullundefined 和 nullundefined表示一個變數被定義了,但是沒有被賦值。 null表示這個變數根本沒被定義。總之,無論是undefined和null,他們基本上都是不能使用的值。 null類型有個特別的作用。例如有個對象,有很多屬性,這時候你想把這個變數給標記為可以被垃圾回收了,那就可以把它的值設為null。 最熟悉的陌生人: 物件我曾經認為物件在js中是最簡單的,而實際上,是我太天真。
物件的資料屬性// 定义一个对象,so easy var boy = { name: 'wangduanduan' }var boy = {} Object.defineProperty(boy, 'name', { writable: false, value: 'wdd' }) boy.name = 'ddw' // 设置不会生效,boy.name的值还是wdd
預設值 | ##說明 | |
---|---|---|
true | 表示這個屬性能否用delete刪除 | |
true | 表示這個屬性能否透過for in 迴圈遍歷 | |
true | 表示這個屬性能否被修改 | |
undefined | #表示這個屬性的資料值 |
var man = { _sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this._sex = v === '男' ? 1 : 0 }, get: function () { return this._sex === 1 ? "男" : "女" } }) nam.sex // 男想想如果把上面的_sex改成sex會有什麼問題?
// 这样写会有什么问题 var man = { sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this.sex = v === '男' ? 1 : 0 }, get: function () { return this.sex === 1 ? "男" : "女" } })這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的
JavaScript影片教學
專欄!以上是JavaScript資料類型的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!