成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JavaScript數(shù)據(jù)類型是什么

小編給大家分享一下JavaScript數(shù)據(jù)類型是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網(wǎng)站、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的柯橋網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

最近面試了三個開發(fā),他們都沒有說清楚JS的基本類型有哪些。而且往往錯誤的說了一些C語言的數(shù)據(jù)類型,例如int, float, double之類的數(shù)據(jù)類型。

無論什么語言,熟練掌握數(shù)據(jù)類型都是這門語言最根本的知識點

JS數(shù)據(jù)類型分為兩類,一類是基本類型,他們有

  • Number
  • String
  • Boolean
  • Undefined
  • Null
  • Symbol

js的基本類型就這么幾個,除此之外,其他的類型都是對象。

Number類型

在JS沒有整型,float,或者double類型的數(shù)值,所有數(shù)值統(tǒng)一叫做Number類型。

JS使用IEEE754格式表示整數(shù)和浮點數(shù),一般來說整數(shù)占用了32位,而浮點數(shù)數(shù)占用64位。因為浮點數(shù)占用的內(nèi)存空間是整數(shù)的兩倍,所以js會適當?shù)陌迅↑c數(shù)轉(zhuǎn)化為整數(shù)儲存。

4.0 === 4 // true

數(shù)值類型都是有大小范圍的

Number.MAX_VALUE  // 1.7976931348623157e+308
Number.MIN_VALUE // 5e-324
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_SAFE_INTEGER // -9007199254740991

浮點數(shù)一般都是計算結(jié)果不準確的,這不是JS的問題,所有語言中都有這個問題。

計算0.1 + 0.2 === 0.3這個結(jié)果永遠是false。

要比較浮點數(shù)是否相等,可以采用Number.EPSILON, Number.EPSILON是一個非常小的數(shù)值,如果兩個浮點數(shù)相減小于Number.EPSILON, 則可以為認為是相等。

Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true

Number類型中有三個比較特殊的兄弟

  1. Infinity 當數(shù)值超過Number類型的最大值,他就會變成正無窮
  2. -Infinity 當數(shù)值類型小于Number類型的最小值,就會變成負無窮
  3. NaN NaN的意思是它不是一個數(shù)值,例如某個數(shù)值除以0,一般語言都會報錯,但是js不會,而是該變量的值會變成NaN。

數(shù)值類型一旦變成這三個兄弟,就無法參與后續(xù)的數(shù)值運算。

String類型

從靜態(tài)語言過來的同學,遇到字符串就會問個問題:請問你能裝多少個字符串呢?

字符串傻傻一笑,說:自從我誕生以來,從來就沒被裝滿過!

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 228 - 1 (~256MB).  --MDN

Boolean

Boolean值很簡單,就false和true兩個值。但是很多人不能完全回答出,哪些值會被轉(zhuǎn)換成false。

除了下面幾個能夠被轉(zhuǎn)成false的值,其他都是true。

false
''
NaN
undefined
0, -0, +0
null

undefined 和 null

undefined表示一個變量被定義了,但是沒有被賦值。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

對象的數(shù)據(jù)屬性

數(shù)據(jù)屬性默認值說明
configurabletrue表示這個屬性能否用delete刪除
enumerabletrue表示這個屬性能否通過for in 循環(huán)遍歷
writabletrue表示這個屬性能否被修改
valueundefined表示這個屬性的數(shù)據(jù)值

如果調(diào)用Object.defineProperty沒有指定configurable, enumerable, writable,那么他們的默認值都是false。

訪問器屬性

訪問器屬性就是get, set讓你可以在讀取或者寫入值時,做一層攔截。

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 ? "男" : "女"
 }
})

看完了這篇文章,相信你對JavaScript數(shù)據(jù)類型是什么有了一定的了解,想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享文章:JavaScript數(shù)據(jù)類型是什么
URL分享:http://jinyejixie.com/article24/pocdce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)服務器托管、網(wǎng)站內(nèi)鏈網(wǎng)頁設計公司、App設計、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
余姚市| 赤城县| 平罗县| 黎平县| 和林格尔县| 宣武区| 隆尧县| 喜德县| 鄢陵县| 兰坪| 民勤县| 定州市| 革吉县| 衡东县| 寿阳县| 封开县| 孙吴县| 武宣县| 务川| 舟山市| 嘉黎县| 桦甸市| 电白县| 会理县| 田阳县| 南郑县| 武威市| 紫阳县| 马尔康县| 静安区| 南昌县| 盐边县| 济源市| 临朐县| 京山县| 威海市| 青冈县| 翁牛特旗| 滨海县| 孝义市| 北海市|