好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 萌新HTML5 入門指南(二)

萌新HTML5 入門指南(二)

熱門標簽:只辦理400電話 如何獲取地圖標注客戶 電話機器人電銷系統掙話費 平涼地圖標注位置怎么弄 機器人外呼系統存在哪些能力 南昌仁和怎么申請開通400電話 拓展地圖標注 高德地圖標注地點糾錯 電話機器人黑斑馬免費

本文由葡萄城技術團隊原創并首發

上一篇我們已經為大家介紹了HTML5新增的內容和基礎頁面布局,這篇會繼續向大家介紹廣義上HTML5中另一個組成部分:JavaScript數據類型。

JavaScript作為一種弱類型語言,最大的特點就是動態類型。也就是說不用提前聲明變量的類型,在程序運行時,類型會被動態的確定,并且在執行過程中可以動態的修改變量的類型。同時不同類型變量在運算時會自動進行隱式的類型轉換。以下是一些常見的隱式轉換示例:

var foo = 2020;     // typeof foo -> "number"
var foo = "SpreadJS"     // typeof foo -> "string"
var foo = true + 1;         // foo = 2 typeof foo -> " number"
var foo = true + false;      // foo = 1 typeof foo -> " number"
var foo = '5' - '2';          // foo = 3 typeof foo -> " number"
var foo = 20 + 20 + "SpreadJS" // foo = "40SpreadJS" typeof foo -> "string"
var foo = "SpreadJS" + 20 + 20 // foo = "40SpreadJS" typeof foo -> " string"

依據最新的 ECMAScript 標準將數據類型定義了 8 種:

其中為原始類型:Boolean、Null、Undefined、Number、BigInt、String、Symbol 和對象類型:object

關于原始類型需要知道的幾個知識點:

  • 原始類型的值是按值訪問的 

即在賦值和修改值時是通過值傳遞的方式來完成的,對變量賦值或者修改值會在內存中重新分配空間。

例如:

var a, b, x, y;
a = " SpreadJS";
b = " GrapeCity";
x = a;
y = b;
console.log(a, b, x, y);   // result:  SpreadJS GrapeCity SpreadJS GrapeCity

a和x, b和y之間賦值是完全獨立的拷貝,互不干涉,如果我們將其中任何一個變量的值重新改變,其他相同值的變量也不會受到任何影響。

  • 嚴格相等===和非嚴格相等==

對于原始類型,==只進行值比較,如果是不同類型則會在轉換后再比較,===則會比較數據類型。

例如:

undefined === null //fasle
undefined == null //true
true === 1 //fasle
true == 1 //true
null == 0 //false
  • Null 和 Undefined

null和undefined在使用中幾乎沒有區別,在使用非嚴格相等比較時結果也為true,它們的區別就是在于進行數值轉換時它們的字面意義不同,undefined代表未定義,轉為數值為NaN,而null為空、轉為數值時為0。

例如:

Number(undefined)    //NaN
Number(null)    //0
1 + undefined   //NaN
1 + null    //1

雖然兩者差別不大,并不會嚴格按照上面的區分去使用,但在實際項目應用中,對于空值的判斷兩者則都需要考慮。

  • NaN

NaN 即 Not a Number ,表示了非數字類型,任何和NaN的操作返回值都是NaN,NaN不等于NaN。其中有一個全局方法 isNaN(),它的作用是檢查一個值是否能被 Number() 成功轉換。 如果能轉換成功,就返回 false,否則返回 true 。

例如:

NaN == NaN;     // fasle
isNaN('123')   // false 能轉換
isNaN('abc')    // true 不能轉換
  • 浮點數精度誤差

在JavaScript中,整數和浮點數都屬Number數據類型,所有數字都是以64位浮點數形式存儲的,也就是說JavaScript底層沒有整數,1和1.0是相同的。

下面舉幾個例子來說明:

// 加法
0.1 + 0.2 = 0.30000000000000004
0.1 + 0.7 = 0.7999999999999999
0.2 + 0.4 = 0.6000000000000001
 
// 減法
0.3 - 0.2 = 0.09999999999999998
1.5 - 1.2 = 0.30000000000000004
 
// 乘法
0.8 * 3 = 2.4000000000000004
19.9 * 100 = 1989.9999999999998
 
// 除法
0.3 / 0.1 = 2.9999999999999996
0.69 / 10 = 0.06899999999999999
 
// 比較
0.1 + 0.2 === 0.3 // false
(0.3 - 0.2) === (0.2 - 0.1) // false

類似這樣看起來不會算錯的問題,在某些系統尤其是涉及財務的系統中會是一個嚴重的問題,這里就不展開解釋發生誤差的原因了,大家可自行研究,我們這只對解決方案簡單的列一下,1. 可以通過引用類似Math.js、decimal.js、big.js這樣的類庫。2.對于對數字精度要求不高的系統,可以格式化并保留x位小數來處理。3. 計算時,將小數部分和整數部分分開計算再合并,等。

關于引用類型需要知道的幾個知識點:

  • 引用類型的值是按引用訪問的

在操作對象時,實際上是在操作對象的引用而不是實際的對象。給變量賦值改變的是對象的引用關系。

例如:

var obj1 = {a:1};
var obj2 = obj1;
obj1.a = 2;
console.log(obj2.a) // result: 2.obj1和obj2為同一對象
obj1 = {a:3};
console.log(obj2.a) // result: 2.obj1指向新對象,obj2不變
  • 引用類型===和==意義相同都為引用的比較

即是否為同一對象,各類型之間的非嚴格相等==比較類型轉換可參考下表

被比較值 B

   

Undefined

Null

Number

String

Boolean

Object

被比較值 A

Undefined

true

true

false

false

false

IsFalsy(B)

Null

true

true

false

false

false

IsFalsy(B)

Number

false

false

A === B

A === ToNumber(B)

A=== ToNumber(B)

A== ToPrimitive(B)

String

false

false

ToNumber(A) === B

A === B

ToNumber(A) === ToNumber(B)

ToPrimitive(B) == A

Boolean

false

false

ToNumber(A) === B

ToNumber(A) === ToNumber(B)

A === B

ToNumber(A) == ToPrimitive(B)

Object

false

false

ToPrimitive(A) == B

ToPrimitive(A) == B

ToPrimitive(A) == ToNumber(B)

A === B

類型檢測

JavaScript中類型檢測方法有很多,有例如:typeof、instanceof、Object.prototype.toString、constructor、duck type這幾種。

雖然方法很多,但判斷思路就是兩種:1根據數據類型判斷 2 根據構造函數判斷。

  • typeof

typeof可以判斷數據類型,依據之前的介紹,javascript變量類型分為值類型和引用類型,typeof應用場景只可以區分值類型的數據類型,例如:

typeof 42 // "number"
typeof {} // "object"
typeof undefined // " undefined"
  • instanceof

和typeof一樣,instanceof用于判斷引用類型的數據類型。

例子:

(function(){}) instanceof Function

其他的還有Object.prototype.toString、constructor、duck type,在這就不一一介紹。

在了解了JavaScript的基礎數據類型知識后,后面我們會繼續為大家借著介紹CSS相關的內容。

以上就是萌新HTML5 入門指南(二)的詳細內容,更多關于萌新html5 入門的資料請關注腳本之家其它相關文章!

標簽:池州 棗莊 漯河 西藏 永州 遼源 青島 新疆

巨人網絡通訊聲明:本文標題《萌新HTML5 入門指南(二)》,本文關鍵詞  萌新,HTML5,入門,指南,二,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《萌新HTML5 入門指南(二)》相關的同類信息!
  • 本頁收集關于萌新HTML5 入門指南(二)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 嗯~啊~快点??死我软件| 亚洲v天堂| 国产男男Gay??体育生A片| 钟丽缇色戒未删减| 啊~用力cao我cao死我| 扒开胸罩疯狂捏胸吃奶头视频大全| 国产做受???高潮在线| 免费看无码一级A片放24小时| 免费人成视频KKKK4444| japanesehdfree性护士| 免费无遮挡??视频网站暗夜| 午夜伦伦电影理论片A片大苹果 | yin荡美少年挨c日记H| 亚洲自拍小说| FXXX性日韩| 91在线无码精品秘?竹菊| 行长将她两个双腿分得更开| 少妇高潮流白浆喷水的A片出| 老师好爽要尿了潮喷了18p| 午夜看片在线观看| 啊啊啊啊用力| 亚丝娜本子纯肉侵犯肉全彩无码| 啊轻点灬太粗嗯太深A片| 被校花玩到哭百合文肉| 迷人的保姆在线中字| 男生戳美女两腿中间那个视频 | www久久日本无码夜色| 黄色一级短视频| 偷睡闺蜜男朋友(高H)| 我的奶好大想被男人吃奶| 免费看日本大片免费| 在ktv包房里被做了| 色吊丝免费AV一区二区| 荡娇妻荒婬史1~5全文阅读 | 国产精品久久永久免费| 巨茎黑人大战范冰和刘涛| 500短篇超污TXT| freeexxx性hd| 引诱亲女乱怀孕小说| 色色色爱| 91精品国产99久久|