亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript數據類型的示例分析

發布時間:2021-09-06 14:14:14 來源:億速云 閱讀:132 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關javascript數據類型的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1. undefined 和 null

undefined是一個變量而不是一個關鍵字,所以可以被重新賦值。為了避免歧義,一般推薦用void 0 來獲取undefined;

null是一個關鍵字,所以可以放心地使用null。

Undefined 跟 null 有一定的表意差別,null 表示的是:“定義了但是為空”。所以,在實際編程時,我們一般不會把變量賦值為 undefined,這樣可以保證所有值為 undefined 的變量,都是從未賦值的自然狀態。 

function test(){
  var undefined = 123;
  console.log(undefined) 
}
test() ==> 123

2. +0 和 -0

JavaScript 中有 +0 和 -0,在加法類運算中它們沒有區別,要區別他們的話,需要使用1/x 

3/0 ==> Infinity
3/-0 ==> -Infinity

3. 0.1 + 0.2 = 0.3?

在JS中,0.1+0.2是不等于0.3的,因為0.1在計算機中用二進制表示的話,會產生無限循環位數。類似于十進制中,三分之一就是無限循環小數。

所以對這些循環小數進行數學運算時,并將二進制數據再轉換成十進制時,也還是無線循環小數,對末尾進行截取后,得到的值就是0.30000000000000004

正確的比較方法是使用JS提供的最小精度值,檢查等式左右兩邊差的絕對值是否小于最小精度

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

4. 666 和 new Number(666)的區別

666是一個number類型的數字,而Number(666)是一個對象類型的數據。

‘HELLO'.charAt(1) ==》 'E'

上門代碼中,點(.)運算符提供了裝箱操作,會根據一個基礎類型構造一個臨時對象,所以能在基礎類型上調用對應對象的方法

5. parseInt 和 parseFloat

parseInt(string, radix)

javascript數據類型的示例分析

parseInt(15,6)
11 ==> 1*6+5

parseInt(0x15) 
21 ==> 16*1+5

parseFloat 則直接把原字符串作為十進制來解析,它不會引入任何的其他進制

6. 裝箱轉換

每一種基本類型 Number、String、Boolean、Symbol 在對象中都有對應的類,所謂裝箱轉換,正是把基本類型轉換為對應的對象。

Symbol 比較特殊,不能直接用 new Symbol獲得對應的對象, 可以用Object(Symbol('hello')) 來獲得。

 var symbolObject = Object(Symbol("a"));

  console.log(typeof symbolObject); //object
  console.log(symbolObject instanceof Symbol); //true
  console.log(symbolObject.constructor == Symbol); //true

7. 拆箱轉換

把對象轉換成number或string時,會默認進行拆箱轉換,即會調用對象內置的toString或者valueOf方法將對象轉換成基本類型

javascript數據類型的示例分析

這兒定義了一個obj對象,重寫了它的valueOf和toString方法進行測試,可以看到,當Number(obj)時,valueOf優先于String執行,但是當這2個方法都沒有返回基本類型的數據時,就會產生錯誤。

 javascript數據類型的示例分析

當valueOf方法返回基本類型的數據時,成功將obj轉換成了數字,而且toSring方法沒有執行。

 javascript數據類型的示例分析

當valueOf返回非基本類型時,toString方法才會被調用。只有當Object到 String 的拆箱轉換才會優先調用 toString方法。

 注:ES6允許對象通過顯式指定 toPrimitive Symbol 來覆蓋原有的行為。

var o = {
    valueOf : () => {console.log("valueOf"); return {}},
    toString : () => {console.log("toString"); return {}}
  }

  o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}


  console.log(o + "")
  // toPrimitive
  // hello

關于“javascript數據類型的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定陶县| 屏山县| 车险| 游戏| 永泰县| 塘沽区| 霍州市| 台南市| 峡江县| 铜陵市| 汉阴县| 娱乐| 潍坊市| 昌宁县| 邵阳县| 家居| 正镶白旗| 拉萨市| 灵寿县| 苏州市| 瑞昌市| 镇江市| 新巴尔虎左旗| 阿拉善右旗| 陆良县| 塘沽区| 手机| 武功县| 永川市| 长汀县| 绥化市| 乌海市| 西和县| 田东县| 武乡县| 新源县| 商城县| 东阳市| 开江县| 庐江县| 田阳县|