q第三章 類型、值和變量

數(shù)據(jù)類型:

原始類型(primitive type)對象類型(object type)。
原始類型包括:

string number boolean null undefined

對象是屬性(property)的集合,每個屬性都由”名/值對“組成。
其中有一個特殊的對象——全局對象(global object)

3.1 數(shù)字

JS采用IEEE 754標準定義的64位浮點格式表示數(shù)字。

  • 注意:JS中實際的操作(比如數(shù)組索引,位操作符)則是基于32位整數(shù)。
  • 注意:在任何數(shù)字直接量前添加負號可以得到它的負值,但負號是一元求反運算符,并不是數(shù)字直接量語法的組成部分。
3.1.1 整型直接量

可識別十進制、十六進制

3.1.2浮點型直接量

整數(shù)部分+小數(shù)點+小數(shù)部分
指數(shù)計數(shù)法

3.1.3 算術運算

算數(shù)運算符
復雜運算:通過作為Math對象的屬性定義的函數(shù)和常量來實現(xiàn)。

  • JS中的算術運算在溢出、下溢和被零整除時不會報錯。

  • 溢出:數(shù)字運算結果超過了Js所能表現(xiàn)的數(shù)字上限,結果為Infinity或-Infinity

  • 下溢:運算結果無限接近0,并比JS所能表現(xiàn)的最小值還小。返回
    0,若是負數(shù)發(fā)生下溢,返回負零。
    被零整除返回Infinity或-Infinity。
    返回NaN:
    0/0
    Infinity/Infinity
    給任意負數(shù)作開方運算
    算術運算符和不是數(shù)字或無法轉(zhuǎn)換為數(shù)字的操作數(shù)一起使用。

  • 使用x!=x判斷NaN,只有這個值返回true

  • 函數(shù)IsNaN()參數(shù)是NaN或非數(shù)字值返回true

  • 函數(shù)IsFinite()參數(shù)不是NaN或Infinity、-Infinity返回true

  • 0 = -0 (作為除數(shù)時要留心)

3.1.4 二進制浮點數(shù)和四舍五入錯誤
var x =0.3-0.2
var y =0.2-0.1
x == y             //false
x = 0.1            //false
y = 0.1            //true

舍入誤差

3.1.5 日期和時間

Date()構造函數(shù)等

3.2 文本

字符串是一組由16位值組成的不可變的有序序列。

3.2.1 字符串直接量

在ECMAScript5中字符串可拆分成多行,每行必須用反斜線\結束,另起一行用\n。
在JS和html中各自使用獨立的引號分隔。

3.2.2 轉(zhuǎn)義字符
D71E471D937C4AFA8FA863F70C89826C.jpg

6D75C0EC703C4F1D9DE6789487B0E138.jpg
3.2.3 字符串的使用

用+連接字符串
字符串的多個屬性

3.2.4 模式匹配

RegExp()函數(shù)用來創(chuàng)建表示文本匹配模式的對象。這些模式稱為正則表達式。

3.3 布爾值

布爾值包含toString()方法。

3.4 null和undefined

null是關鍵字,undefined是預定義的全局變量

3.5 全局對象

F8D5EE8D4E8845EABEFF41F1FF5FB4AF.jpg

3.6 包裝對象

存取字符串、數(shù)字或布爾值的屬性時創(chuàng)建的臨時對象稱為包裝對象,它只是偶爾用來區(qū)分字符串值和字符串對象、數(shù)字和數(shù)值對象以及布爾值和布爾對象。

var str = "string" ;
此時str是基本字符串類型
str.length = 6 可以這樣使用的原因是js生成了值和str一樣的臨時對象,操作完成后臨時對象被刪除。
嘗試給str增加一個方法:
str.t = 3
查看值:str.t = undefined 臨時對象被刪除

3.7 不可變的原始值和可變的對象引用

原始值(string、number、boolean、null和undefined)與對象有著根本的區(qū)別。原始值不可更改!
通常將對象稱為對象引用(reference type),對象值都是引用。

3.8 類型轉(zhuǎn)換

2B70D4F6BB634123881949F58C1C0849.jpg
3.8.1 轉(zhuǎn)換和相等性
3.8.2 顯示類型轉(zhuǎn)換

Number("3") //3
String(false) //"false"或使用false.toString()
Boolean([ ]) //true
Object(3) //new Number(3)

  • 注意:除了null和undefined之外的任何值都具有toString()方法
3.8.3 對象轉(zhuǎn)換為原始值

對象——boolean 全部為true
對象——string


E5A2A43AAD0F4D56A7722FE6DEE66DF5.jpg

A0F9B24ECD964057966CB4AAC424FA2F.jpg

對象——number

8CC47E0F91F24C4285CBAFFD3D5D104C.jpg

3.9 變量聲明

3.10 變量作用域

3.10.1 函數(shù)作用域和聲明提前

函數(shù)的作用域是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是可見的。這意味著變量在聲明之前甚至已經(jīng)可用(聲明提前)

3.10.2 作為屬性的變量

JS全局變量是全局對象的屬性

3.10.3 作用域鏈
8F448070840445E58B3288B6776D239A.jpg
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容