資料型別之字串篇

小橋流水嘩啦啦發表於2018-12-21

資料型別之字串篇

公佈上期答案:小駝峰我們經常用在變數、函式名屬性名這樣的識別符號身上。 而大駝峰的命名方式,我們更多用在class(類)上。

這裡需要注意的是:“不是一定要這樣操作,而是一種預設的約定。

遵從這樣的方式命名,不容易一眼被看出來剛學習js哦~。

今天我們要說的就是資料型別,新接觸的小夥伴對這個可能就覺得比較迷糊了,怎麼資料還有型別??

當然~上一期我們介紹了變數,利用變數我們可以大量減少重複的程式碼,不知道大家有沒有注意這個被儲存的值,可是很多變的~

例如:

var a = 'miaov';
var b = 20181217;
var c = true;
複製程式碼

等等等...我們會發現一會英文,一會數字。但是有的加引號,有的就不加??

這到底因為什麼呢?

這就是我們今天要介紹的大主題:資料型別,接下來~就有請這個大家庭成員一位一位登場吧~

資料型別之字串篇

資料型別大分類

我們把資料型別分為兩個大類:

• 基本型別(簡單型別)

• 複雜型別(引用型別)

我們來看看基本型別有多基本,複雜型別有多複雜~

有請第一位:

基本型別 - String

String型別是由0或者多個字元組成的,就像我們吃燒烤,給所有食材串起來~所以我們把String叫做字串。

資料型別之字串篇

那我們怎麼分辨什麼是字串呢?大家注意看圖,串的前後都露出來籤。

我們的字串的前後也有一個標誌,就是——引號,字串由一對雙引號("")或者單引號('')包裹,在這裡雙引號和單引號沒有差別~所以,以下兩種都是字串的表現方式:

var a = "miaov";
var b = 'miaov';
複製程式碼

這裡對於學習後端的同學可能會不太習慣~因為在後端中,單引號和雙引號是不一樣的,單引號只能是字元。

但是在ECMAScript中是沒有差別的。需要額外注意的是符號必須是配對的,不能出現如下配對:

var str = 'miaov"; //左邊單引號 右邊雙引號,不配對
複製程式碼

為什麼要強調這個問題呢?因為有時候我們想要儲存的字串可能本身自己就帶有引號,像下面這樣:

//這是"miaov"的紅寶書系列  <-這是我想存的內容

var str = "這是"miaov"的紅寶書系列";  //錯誤的方式

var str = '這是"miaov"的紅寶書系列';  //這才是正確的
複製程式碼

如果又有雙引號又有單引號怎麼辦?

同學,你思維很活躍哦~

這時候我們需要用到一個東西 —— 轉義。

轉義是一個 \ 我們來看一下案例:

資料型別之字串篇

以上為str中儲存值列印的截圖

字串的特點

ECMAScript中的字串是不可變的,也就是說你只要建立出來,它就不能被改變了,但是很多小夥伴覺得,不會啊:

var lang = "Java";
lang = lang + "Script";
複製程式碼

這不就改過來了麼??(關於+號,我們後面再說,這裡大家只要知道,它就是拼接的功能)

事實上在這裡,當我們想要改變某個變數儲存的字串,首先,它是銷燬了原來的字串的!!然後再用另一個包含新值的字串填充該變數的。

那麼上面這個案例它具體是怎麼個步驟呢?

來看一下

  • 第一步:建立一個可以容納10個字元的新字串

  • 第二步:在這個字串中填充"Java"和"Script"

  • 第三步:銷燬原來的字串"Java"和"Script",因為已經用不到了,我們需要的是第一步時候建立的新字串。

這個過程是發生在後臺的,我們看不到,在某些舊版本的瀏覽器(指的是:IE6、低於1.0的Firefox等),因為這種頻繁的建立和銷燬,導致拼接字串的效能很差,所以很多時候,我們會選擇使用join方法。

不過在現代瀏覽器中對字串的“+”運算做了優化,已經解決了這個問題,就可以放心使用哦~

問題來了:那麼"+"的拼接方式還是最慢的麼?知道的同學趕緊留言哦~下期我們揭曉答案!

下期預告

下期帶來基本型別 - Number,不是數字的數字型別等你來看~

相關文章