天天看點

JavaScript小結(1)JavaScriptss是什麼基本文法資料類型

JavaScript小結(1)

  • JavaScriptss是什麼
  • 基本文法
    • 1. 語句
    • 2.變量
    • 3.變量提升
    • 4.辨別符
    • 5.注釋
    • 6.區塊
    • 7.條件語句
    • 8.循環語句
    • 9.标簽
  • 資料類型
    • 1.種類
    • 2.typeof運算符
    • 3.null, undefined 和布爾值
    • 4.數值
      • 4.1 概述
      • 4.2 特殊數值
    • 5.字元串
    • 6.對象

JavaScriptss是什麼

JavaScript 是一種輕量級的腳本語言。

腳本語言(script language),指的是它不具備開發作業系統的能力,而是隻用來編寫控制其他大型應用程式(比如浏覽器)的“腳本”。

JavaScript 也是一種嵌入式(embedded)語言。

它本身提供的核心文法不算很多,隻能用來做一些數學和邏輯運算。

從文法角度看,JavaScript 語言是一種“對象模型”語言。

JavaScript 的核心文法部分相當精簡,隻包括兩個部分:基本的文法構造(比如操作符、控制結構、語句)和标準庫(就是一系列具有各種功能的對象比如Array、Date、Math等)。除此之外,各種宿主環境提供額外的 API(即隻能在該環境使用的接口),以便 JavaScript 調用。以浏覽器為例,它提供的額外 API 可以分成三大類。

  • 浏覽器控制類:操作浏覽器
  • DOM類:操作網頁的各種元素
  • Web類:實作網際網路的各種功能

基本文法

1. 語句

JavaScript 程式的執行機關為行(line)

語句(statement)是為了完成某種任務而進行的操作

2.變量

變量是對“值”的具名引用。變量就是為“值”起名,然後引用這個名字,就等同于引用這個值

var是變量聲明指令。它表示通知解釋引擎,要建立一個變量。

如果隻是聲明變量而沒有指派,則該變量的值是undefined。undefined是一個特殊的值,表示“無定義”。如果使用var重新聲明一個已經存在的變量,是無效的。但是,如果第二次聲明的時候還進行了指派,則會覆寫掉前面的值。

JavaScript 是一種動态類型語言,也就是說,變量的類型沒有限制,變量可以随時更改類型。

3.變量提升

JavaScript 引擎的工作方式是,先解析代碼,擷取所有被聲明的變量,然後再一行一行地運作。這造成的結果,就是所有的變量的聲明語句,都會被提升到代碼的頭部,這就叫做變量提升(hoisting)

4.辨別符

辨別符(identifier)指的是用來識别各種值的合法名稱。最常見的辨別符就是變量名,以及函數名。

簡單說,辨別符命名規則如下:

  • 第一個字元,可以是任意 Unicode 字母(包括英文字母和其他語言的字母,如中文),以及美元符号($)和下劃線(_)。
  • 第二個字元及後面的字元,除了 Unicode 字母、美元符号和下劃線,還可以用數字0-9。
  • 保留字不能用作辨別符

5.注釋

  • 單行注釋
    • 用//起頭
    • JavaScript 可以相容 HTML 代碼的注釋,是以 也被視為合法的單行注釋,需要注意的是,–>隻有在行首,才會被當成單行注釋,否則會當作正常的運算
  • 多行注釋,放在之間

6.區塊

JavaScript 使用大括号,将多個相關的語句組合在一起,稱為“區塊”(block)

JavaScript 的區塊不構成單獨的作用域(scope)

7.條件語句

JavaScript 提供if結構和switch結構,完成條件判斷,還有三元運算符?:

有些開發者習慣将常量寫在運算符的左邊,這樣的話,一旦不小心将相等運算符寫成指派運算符,就會報錯,因為常量不能被指派

8.循環語句

JavaScript 提供while結構和for結構

9.标簽

JavaScript 語言允許,語句的前面有标簽(label),相當于定位符,用于跳轉到程式的任意位置,标簽的格式如下:

label:
			語句
           

标簽可以是任意的辨別符,但不能是保留字,語句部分可以是任意語句

break 和 continue 在使用時 ,如在其後加上label名則應用于最外層循環,否則應用于内層循環。

資料類型

1.種類

JavaScript 的資料類型,共有六種。(ES6 又新增了第七種 Symbol 類型的值)

  • 數值(number):整數和小數(比如1和3.14)
  • 字元串(string):文本(比如Hello World)。
  • 布爾值(boolean):表示真僞的兩個特殊值,即true(真)和false(假)
  • undefined:表示“未定義”或不存在,即由于目前沒有定義,是以此處暫時沒有任何值
  • null:表示空值,即此處的值為空。
  • 對象(object):各種值組成的集合。

數值、字元串、布爾值這三種類型,合稱為原始類型(primitive type)的值,對象則稱為合成類型(complex type)的值

對象是最複雜的資料類型,又可以分成三個子類型。

  • 狹義的對象(object)
  • 數組(array)
  • 函數(function)

2.typeof運算符

識别一個值類型的方法

  • typeof運算符
  • instanceof運算符
  • Object.prototype.toString方法

typeof運算符可以傳回一個值的資料類型,數值、字元串、布爾值分别傳回number、string、boolean。typeof可以用來檢查一個沒有聲明的變量,而不報錯。

3.null, undefined 和布爾值

null表示空值,即該處的值現在為空。調用函數時,某個參數未設定任何值,這時就可以傳入null,表示該參數為空。比如,某個函數接受引擎抛出的錯誤作為參數,如果運作過程中未出錯,那麼這個參數就會傳入null,表示未發生錯誤。

undefined表示“未定義”,下面是傳回undefined的典型場景。

// 變量聲明了,但沒有指派
var i;
i // undefined

// 調用函數時,應該提供的參數沒有提供,該參數等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 對象沒有指派的屬性
var  o = new Object();
o.p // undefined

// 函數沒有傳回值時,預設傳回 undefined
function f() {}
f() // undefined
           

(其他值轉換為布爾值的)轉換規則是除了下面六個值被轉為false,其他值都視為true。

  • undefined
  • null
  • false
  • NaN
  • " " 或 ’ '(空字元串)

4.數值

4.1 概述

JavaScript 内部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。是以,1與1.0是相同的,是同一個數。這就是說,JavaScript 語言的底層根本沒有整數,所有數字都是小數(64位浮點數)。容易造成混淆的是,某些運算隻有整數才能完成,此時 JavaScript 會自動把64位浮點數,轉成32位整數,然後再進行運算。

絕對值小于2的53次方的整數,即-253到253,都可以精确表示

JavaScript 能夠表示的數值範圍為21024到2-1023(開區間),超出這個範圍的數無法表示。如果一個數大于等于2的1024次方,那麼就會發生“正向溢出”,即 JavaScript 無法表示這麼大的數,這時就會傳回Infinity。如果一個數小于等于2的-1075次方(指數部分最小值-1023,再加上小數部分的52位),那麼就會發生為“負向溢出”,即 JavaScript 無法表示這麼小的數,這時會直接傳回0。

JavaScript 提供Number對象的MAX_VALUE和MIN_VALUE屬性,傳回可以表示的具體的最大值和最小值

4.2 特殊數值

+0或-0當作分母,傳回的值是不相等的。因為除以正零得到+Infinity,除以負零得到-Infinity,這兩者是不相等的

NaN是 JavaScript 的特殊值,表示“非數字”(Not a Number),主要出現在将字元串解析成數字出錯的場合。0除以0也會得到NaN。NaN不等于任何值,包括它本身。

Infinity表示“無窮”,用來表示兩種場景。一種是一個正的數值太大,或一個負的數值太小,無法表示;另一種是非0數值除以0,得到Infinity。Infinity大于一切數值(除了NaN),-Infinity小于一切數值(除了NaN)。Infinity與NaN比較,總是傳回false。0乘以Infinity,傳回NaN;Infinity減去或除以Infinity,得到NaN;Infinity與undefined計算,傳回的都是NaN。

5.字元串

字元串就是零個或多個排在一起的字元,放在單引号或雙引号之中。單引号字元串的内部,可以使用雙引号。雙引号字元串的内部,可以使用單引号。

字元串預設隻能寫在一行内,分成多行将會報錯,如果長字元串必須分成多行,可以在每一行的尾部使用反斜杠。

反斜杠(\)在字元串内有特殊含義,用來表示一些特殊字元,是以又稱為轉義符。需要用反斜杠轉義的特殊字元,主要有下面這些

  • \0 :null(\u0000)
  • \b :後退鍵(\u0008)
  • \f :換頁符(\u000C)
  • \n :換行符(\u000A)
  • \r :Enter鍵(\u000D)
  • \t :制表符(\u0009)
  • \v :垂直制表符(\u000B)
  • \’ :單引号(\u0027)
  • \" :雙引号(\u0022)
  • \\ :反斜杠(\u005C)

JavaScript 使用 Unicode 字元集

6.對象

什麼是對象?簡單說,對象就是一組“鍵值對”(key-value)的集合,是一種無序的複合資料集合。

“鍵名”(成員的名稱),“鍵值”(成員的值)。鍵名與鍵值之間用冒号分隔。

對象的每一個鍵名又稱為“屬性”(property),它的“鍵值”可以是任何資料類型。如果一個屬性的值為函數,通常把這個屬性稱為“方法”,它可以像函數那樣調用。

如果屬性的值還是一個對象,就形成了鍊式引用。

繼續閱讀