javascript裡的基礎文法、資料類型以及類型轉換

來源:互聯網
上載者:User

標籤:運算   存在   邏輯   資料   首碼   作用   class   單詞   3.1   

 

Js基礎文法

 

  1. 在js裡是區分大小寫
  2. 標識符:指變數,數組,函數等名字.定義標識其實就是取名字的過程.

硬性要求:指必需要滿足的,否則無法通過編譯

可不滿足

硬性要求內容:

1.由數字,字母和底線,以及$組成,但不能以數字開頭,禁止使用ES裡面的關鍵字和保留字(其實就是ES裡內建的標識符).

2.區分大小寫

 

軟性要求內容:望文知意

 

命名法則

駝峰命名法:駝峰命名法分兩種,大寫是大駝峰(帕斯卡命名法),第一個單詞首字母小寫是小駝峰.

 

匈牙利命名法:就是以一個或者多個單片語成.前面還會加上一個固定的首碼.這個固定的首碼就表明該變數的類型.

a_Li

 

蛇形命名法:指單詞之間,以底線進行分割

user_name

這種命名法,一般常見Linux核心,C++儲存庫,Ruby裡常見.

 

關於ES裡面的注釋

兩種:

單行://

多行:/**/

 

strict 模式

 

從ES5開始引進的一種模式,更加的嚴格,減少歧義,解析更快,可作為下一個版本的參照.

 

如何進入strict 模式?

“use  strict” defined    使用/嚴格/未定義

 

Js語句

  1. 和多數程式設計語言一樣,每個語句以分號結尾,可以不寫,但是考慮到後期壓縮,所以建議養成書寫分號的習慣.
  2. 關鍵字和保留字

關鍵字:指ES裡定義好了的標識符,我們自己命名的時候,就不能再使用這些關鍵字:else if break

保留字:所謂保留字,指該版本更新後可能會被變成關鍵字的字

變數

就是儲存在裡面的資料隨時可以變化的.

使用變數前先聲明,3個關鍵字:var let const

Var 是ES6之前聲明使用的.

Let 和const 是ES6開始新增的

聲明變數的文法:

關鍵字  變數名

Var          i    

(沒賦值,預設為undefined)

 

變數的聲明和複製是可以同時進行的,如果是第一次給變數賦值,那麼這個過程叫做變數的初始化.

Var   i=5;

可一次性聲明多個變數

在聲明變數的時候只能進行賦值操作,不能進行其他運算,比如+=.

 

  1. var 支援重複聲明    如:i=5  i=10
  2. 先聲明,再定義未賦值,未賦值的會被忽略
  3. 支援遺漏    沒有聲明,直接賦值

 

由於JS是一門解釋性語言(動態語言),所以聲明好的變數可以儲存任意類型。

 

Let,不支援以上1.2.3聲明特性

 

特點:

1.變數提升(重要)

之所以現在不推薦使用以var來聲明變數,是因為var聲明有一個變數提升。所謂變數提升,就是指將變數的聲明提升至當前範圍的頂部。

Console.log(i);

Var i=10;

 

Var i;

Console.log(i);

i=10;

 

Let聲明的變數不存在變數提升,會直接報錯。

 

第二個區別:

Var聲明的變數不存在塊級範圍,在其他語言(靜態)裡面,通過一對{}可以定義塊級範圍。

 

Let聲明存在塊級範圍

 

常量:指不變的量

Const:也是聲明變數的一種方式,但是聲明的變數不能夠再改變。

 

 

Js裡資料類型發分類(***)

兩大類:

基礎資料型別 (Elementary Data Type)(原始值,簡單值)

引用資料類型(複雜值)

 

簡單值:指最簡單 資料區段,不可以再拆分,常見的簡單值:let  i=5

複雜值:複雜值是指由多個簡單值構成的資料,是可以拆分的。

常見的複雜值:let  arr=[1,“hello”]

Arr是數組名,是一個地址

 

簡單值儲存於棧區,複雜值儲存於堆區。

 

長條長條 :  i=5   arr       橢圓 :   [ ......]

 

 

因為未經處理資料(簡單值)所佔的大小空間是固定的,所以儲存於棧區。而參考型別資料,大小不固定,所以無法在棧區開闢合適的空間。所以參考型別的資料存放區在堆區。

 

資料複製時候的區別:

如果是簡單值,那麼我們複製的時候,複製的是值的拷貝。如果是參考型別,則複製的是地址。

 

關於簡單值和複雜值的比較:

如果是簡單值,那麼進行比較的是值,也就是該值相等就是兩個變數相等。如果是參考型別,那麼比較的是地址。

 

 

資料類型

在ES5的時候,基礎資料型別 (Elementary Data Type)有5個:undefined、null、number、boolean、string  ES6開始,變成6個,增減symbol

 

Undefined:只有一個值,undefined

已聲明未賦值的時候,(typeof  i)

沒有聲明,直接報錯

 

Null 資料類型

只有一個:null,代表空,undefined可以說是null衍生而來。

Null==undefined    true

 

Boolran 資料類型 

True  false

嚴格區分大小寫

 

任何資料類型都可以轉為布爾類型

 

Number  任何非0的數字都會轉為true   0為false

String  任何非空的字串都會轉為true,包括引號裡的空格或者是0       Null 字元串為false 

在一個boolean函數,可把其它資料類型轉為bool值

 

以下9個值會被轉化成布爾類型 的false 

“”‘’``字串模板  0和-0  NaN   false  null undefined

 

Number資料類型

 

數字一般我們可以分為整數和實數

 

整數:又可以分為正整數和負整數

 

關於整數,擁有不同的進位。不同的進位,前面需要添加不同的特殊符號

二進位:0b

八進位:0、0o

十六進位:0x

用來計算時,都是會轉化為10進位

 

實數:其實就是小數

2種表示方法:小數型(3.14)、指數型:3.14e2 (10的2次方),3.14e-2 (10的負2次方)

 

最大值和最小值:

MIN-VALUE  MAX-VALUE 可以查看ES裡支援的最大值和最小值

Console.log(number.MAX-VALUE)

 

有無窮的概念,分為正無窮和負無窮

正:infinity    (Math.pow(2,1024))

負:-infinity   (-Math.pow(2,1024))

 

NaN 全稱為not a number  意思這不是一個數,這個東西就是一個標識:代表這個變數是一個非數。

  1. 1.列印時分類為number類型
  2. 2.設計到任何類型的計算,都會返回NaN
  3. 3.NaN不和任何值相等,包括自己

 

 

 

 

 

 

 

在ES裡面有一個專門用來判斷是否為非數的函數:isNaN

()  是數字就是false,不是就是true

 

數值轉化相關函數:Number()  parseInt()  parseFloat()

 

Number():將一個變數轉為數值

如果是布爾值,轉換為0和1

如果是null,轉為0

如果是undefined 轉為NaN

Var i;

I+=2;

Console.log(i);//NaN

 

關於字串使用number()轉換規則:

如果是十進位的純數字,就是十進位

如果是八進位,會捨棄前面的0;//用0o

如果是是十六進位和二進位,那麼會正常的轉為十進位

 

如果不是純數字,裡面有字母,那麼會轉為NaN

如果是Null 字元串,轉為0

 

 

parseInt():也是將一個變數轉換為整數。和number()有一個最大的區別,在轉換時會轉換為數字。

必須以數字開頭,(“123abc”)

parseInt(null) //NaN

parseInt(undefined)  //NaN

 

parseInt()接收第二個數,表明前面是多少進位

(parseInt(“12,8”)) 表示8進位

 

parseFloat():轉換為小數,和parseInt()一樣,會儘可能去保留書  3.14.15.67   3.14

 

在ES6之前,number(),parseInt()、parseFloat()是基於全域對象的方法,但是用ES6開始,上面方法以及被歸類到Number對象。

 

 

String資料類型

 

代表的是字串,在js裡,單雙引號,沒有任何區別

如果字串外雙,內單,反之亦然,一定要加斜杠,可以使用逸出字元,反斜線

 

可以將其他資料類型轉為字串類型的函數:toString()  String()

 

toString() 除了null和undefined,都能轉為字串類型

String()可以傳喚任意類型

  1. 1.( i.toString() ,typeof  i.toString() )
  2. 2.( toString(null) ,typeof  String(null) )

toString()可以傳一個參數,表示幾進位

 

字串類型非常霸道,和其他資料類型相加,得到字串。

 

ES6新添加了字串模版

使用的是兩個反引號``

第一個特點:支援多行文本

第二:可以進行變數的解析,需要將變數名放到${ }中

 

typeof:返回一個變數的資料類型

 

NaN返回number

infinity返回number

Null  返回object 對象

undefined 返回   undefined

 

 類型轉換:分為兩種

 

隱式轉換:指系統內部自動發生的轉換,一般發生於不同資料類型運算的時候。

2+undefined //number

2+null   //2

“2”+NaN ; //2 NaN

 

顯示轉換:就是我們程式員強制進行資料類型轉換

 

轉布爾:Boolean()

轉數字:Number()  ParseInt()   ParseFloat()

轉字串:toString() String()

 

資料轉換的快捷方法:

 

轉布爾值:只需要在變數前面加兩個!!,可轉為當前類型符合的布爾值。

!!true

!!false

 

轉數字:直接*1或者/1

 

null*1 //0,number

undefined/1 //NaN,number

 

轉字串:和Null 字元串相加

 

運算子

 

一元運算子:作用於一個運算元

需要常操作的就是++和 - -   

++a  先自增再運算

a++先運算再自增

 

ps:盡量降低++、- - 放一行,減少差異性

 

邏輯運算子 :與 或 非

 

非。! 取反

與。&&  真真為真 否則為假  在ES裡不僅返回真假,如果裡面講個運算元為真,會返回第二個運算元

短路現象:當第一個運算元為假的時候,那麼就不會去判斷第二個數,因為結果已經是假了。

特殊現象:console.log(null&&NaN)//null

5&&NaN //NaN

5&&null//null

或 ||     或裡面有一個為真,就返回真

同樣有短路現象

 

算數運算子

 

算術:加法、減法、乘法、除法、取餘、指數運算(ES6新增)

Ps:js裡認證相除能得到小數

 

指數:(Math.pow(2,3));

         (2**3);

 

關係運算子

 

大於、小於、大於等於、小於等於、相等、不相等、全等、不全等

 

字母也可以比較大小,比較的是ascll碼對應的字元編碼

A:97 b:98

 

如果是字元和數字進行比較,分為兩種情況

首先將隱式轉為數字進行比較,如果不能,那就迴轉為false

 

相等和全等

 

==只要值相同,不管資料類型

=== 資料類型和值都相同

 

特殊情況:

null==undefined //true

null===undefined //false

NaN===NaN //false

 

賦值運算子

 

除了=以為,還有一組複合賦值運算子:+= -= /= *=

 

三目運算子

文法:運算式?運算式2:運算式3;

 

逗號運算子

一般用於一條語句執行,多個運算子操作

Let i=(1,2,3,4,5)

i=5

 

let i=1 ,a=2;

 

運算子分優先順序,可以用()提升優先順序。

 

javascript裡的基礎文法、資料類型以及類型轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.