基礎語法
1.註釋://註釋內容
多行註釋/*
*
*
*
*/
2.語句
JS中用分號結尾,每條語句獨佔一行。不填分號也能夠,也不會報錯,可是代碼壓縮的時候可能會有問題,建議添加分號。
注:JS是逐層解析,如有一層出錯,則後面的內容都不會進行解析。
3.標識符
含義:表示某一個實體的符號。也就是本身起一個名字,這個名字能夠用來做爲變量名,函數名,對象名等。
2.標識符分類
(1)硬性要求(必需要達成):
——能夠是由數字,字母,下劃線和美圓符號組成,不容許包含其餘特殊符號
——不能以數字開頭
——禁止使用JS中關鍵詞和保留字來命名
——嚴格區分大小寫
(2)軟性要求(能夠選擇不用):
望文知意(看到標識符就知道意思)
3.命名方法:
(1)匈牙利命名法:
匈牙利命名法是微軟公司下面覺得匈牙利籍的程序員所發明的命名法則,其特色是標識符的名字以一個或者多個小寫字母開頭,表示了該變量的數據類型。
Array 數組 a
Boolean 布爾 f
Float 浮點 f
Function fn
Interger(int) 整形 o
Regular Expression 對象 re
String 正則 s
String 字符串 s
前綴以後是一個單詞或多個單詞的組合,該單詞代表變量用途。
例:a_array҅ o_object҅ i_userAge҅ b_isPassed
(2)駝峯命名法
駝峯命名法實際上分爲兩種,一種是大駝峯,另一種是小駝峯。
大駝峯又被稱之爲帕斯卡命名法,就是每一-個單詞都是首字母大寫
例如: UserName
小駝峯和大駝峯的區別在於,小駝峯的第一個單詞的首字母是小寫,後面單詞的首字母是大寫
例如: userName
(3)蛇形命名法
這種命名法常見於Linux內核,C+ +標準庫,Boost以及Ruby, Rust等語言蛇形命名法的特色在於單詞與單詞之間使用下劃線進行分隔例如: <br>user_ name, my_ first_ name
4.關鍵字和保留字
區別:
(1)關鍵字:可用於表示控制語句的開始或結束,或者用於執行特定操做等。按規定,關鍵字是語言自己所保留的,不能用做標識符。
(2)保留字:有可能在未來被看成關鍵字,目前沒有特定的用途。
保留字和關鍵字以下:
abstract、await、 boolean、 break、 byte、 case、catch、 char、 class、 const, continue、debugger、default、 delete、 do、double、 else、 enum、export、 extends、 false、 final、finally、float、 for、 function、 goto、 if、 implements、 import、 in、instanceof、 int、interface、let、 long、 native、 new、 null、 package、 private、 protected、 public、 return、short、static、 super、 switch、 synchronized、 this、 throw、 throws、 transient、 true、 try、typeof、var、 volatile、 void、 while、 with、 yield
5.數據類型介紹
在JS中,數據類型總體上能夠分兩類:簡單數據類型和複雜數據類型
(1)簡單數據類型:
string҅,symbol҅,number҅,boolean҅,undefined҅,null
其中symbol類型實在ES6裏面新添加的基本數據類型
(2)複雜數據類型:
object
包括JS中的數組,正則等,其類型都是object類型
6.查看數據類型
在JS中咱們能夠經過typeof的運算符來查看一個數據的類型
例:console.log(typeof 10);//number
變量
接下來要探討的是對於任何編程語言都是很是重要的東西,變量。他是用於應用內存中存儲的一個值。
1.聲明變量
在JavaScript中聲明變量的方式有3種: var ,let ,const 。其中var如今已經不推薦使用了,由於會有變量提高等問題。(後面咱們會具體來探討此問題)
const和let的區別在於,const 所聲明的變量若是是簡單數據類型,那麼是不可以再改變的。而let所聲明的變量不管是簡單數據類型仍是複雜數據類型,在後面是能夠改變的。
例:
const聲明變量:
const name = 'Bill';name = 'Lucy';
let聲明變量:
let name = 'Bill';
name = 'Lucy';
console.log(name);
2.變量賦值和初始化
用「=」給一個變量賦值,給變量第一次複製的過程,叫作變量的初始化。以便咱們在聲明變量的時候就會將變量給初始化,
例:
let a = 3;
也能夠寫多個,例:
let x = 3,y = 4,z = 5;
若沒有賦值,澤莫哦人爲undefined
3. 使用var聲明變量
在JS中聲明變量的方式有3種: var,let,const。其中var如今已經不推薦使用了。由於使用var來聲明變量會伴隨着一些問題。
固然,這些問題也常常被看做是JS的一些特色,例如重複聲明和遺漏聲明。
(1)重複聲明
若是是使用var關鍵字來聲明的變量,那麼是容許重複聲明的。只不過這個時候會忽略這次聲明。若是從新聲明而且帶有賦值,則至關因而從新賦值
重複聲明不帶有賦值操做,JS引擎會自動忽略後面的變量聲明
var test = 3;var test;
console. log(test);//3
從新聲明時若是帶有賦值操做,那麼會進行一一個數據的覆蓋
var test = 3;var test = 5;
console. log(test);//5
注:在嚴格模式中,使用let或const會報錯
(2)遺漏聲明
若是讀取一個沒有聲明的變量的值,JS會報錯,
JS容許遺漏聲明,直接對變量賦值無需先聲明,賦值操做會自動聲明該變量:
{
a = 5;
console.log(a);//5
}
console.log(a);//5
4.做用域
含義:變量在程序中跟那個被訪問到的區域。
這裏先介紹兩種:
(1)全局做用域
這是JS一進來就處於運行的環境,全局做用域中所聲明變量成爲全局變量。全局變量的特色在於變量在任何地方都能被訪問
(2)局部做用域
在JS中,{}就能夠產生一個局部做用域,局部做用域的變量稱之爲局部變量,只有局部內的被訪問到,外部沒法訪問,但內部能夠訪問到外部。
<br>注:{}中var聲明的變量不是局部變量,而是全局變量,這也是var最先使用遺留的問題。
<br>注2:若是局部做用域內,變量名和全局做用域變量名衝突,優先使用局部做用於中的變量。
##數據類型##
含義:所謂數據類型,就是數據不一樣的種類。在JS中,存在六種簡單數據類型和一種複雜數據類型。
簡單數據類型:
1.undefined類型
他只有一個值,undefined,使用變量但沒有爲其賦值時,這個變量就是undefined。
注:沒有聲明變量,使用時會報錯,不是undefined,但打印類型的時候現實的就是undefined
2.null類型
unll也只有一個值,unll。它表示一個空對象。這也正是用typeo操做符檢測null值時會返回object的緣由。
3.布爾類型
布爾類型也被稱爲boolean類型,就是真和假兩個值:true和false。
例:
let i = true;
console.log(i);//true
console.log(typeof i);//boolean
注:這兩個值與數字值不是一回事,所以true不必定等於1;而false不必定爲0.
注2:boolean類型的true和false區分大小寫,大寫不爲布爾值
注3:如下九個均對應布爾類型的假值
"" 雙引號的空字符串
'' 單引號的空字符串
`` 空字符串模板
0 數字0
-0 JS中-0和0爲不一樣的值
NaN
false
null
undefined
4.數字類型
number能夠分爲兩類:
(1)整數:
能夠分爲正整數和負整數。
須要注意一點進制問題:二進制以0b開頭,八進制以0開頭(或0o,ES6中新增),十六進制以0x開頭
例:
二進制
let a = 0b101;//5
八進制
let b = 017;//15
十進制
let c = 21;//21
十六進制
let d = 0xFD;//253
console.log(a,b,c,d);
注:無論參與運算的變量的值是什麼進制,計算結果依舊是十進制。
(2)實數:
就是咱們日常所見的小數,或者成爲浮點數。在JS中,表示浮點數的方式有兩種:小數型和科學計數法型
例:
let a = 3.14;
let b = 9.12e+2;
console.log(a,b);//結果的值:3.14 912
(3)數值範圍(拓展):
由於內存限制,JS並不能保存全部的數值。在JS中可以表示的最小數值在絕大多數瀏覽器中中爲5e-324,而最大值爲1.7976931348623157e+308。
<br>經過Number.MIN_VALUE和Number.MAX_VALUE咱們能夠查看到JS中支持的最大值和最小值。
注:若是某次計算結果超出了ECMAScript的數值範圍,那麼證書會被轉化爲infinlty(正無窮),附屬會被轉換爲-infinlty(負無窮)
注2:若是某次計算反悔了infinlty值,那個這個值沒法參與下一次計算,由於infinlty不能參與計算
(4)NaN:
全稱Not a Number,非數值,這個數值用於表示原本要返回數值的操做數未返回的狀況(這樣就不會拋出錯誤)。
特色:
——任何涉及NaN的操做都會返回NaN
——NaN和任何值都不相等,包括它自身!
(5)數值轉換
在JS中,有三個函數能夠將非數值的數據轉化爲數值:
——Number():
能夠將非數值轉化爲數值
注1:若是boolean值,true和false將分別被轉化爲1和0
注2:若是是數字,就是簡單的傳入和返回
注3:若是是null值,那麼返回0
注4:若是是undefined,那麼返回NaN
例:
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(10));//10
console.log(Number(null));//0
console.log(Number(undefined));//NaN、
——parseInt():
能夠將非數值轉化爲數值
相比number(),它個多看是否有數字,有的話就會將它轉化爲數值,且只會取整數
——parseFloat():
能夠將非數值轉化爲數值
相比number(),它個多看是否有數字,有的話就會將它轉化爲數值,且能夠取值到小數點後兩位
(6)實例方法(拓展)
含義:必需要實例化多想,而後再對像上面調用。這也涉及到後面對象的知識,如今只須要知道要先有一個數,而後在這個數上面到用相應的方法。
toExponentlal()方法按照指定的小數位數返回數值四捨五入後的字符串表示(經常使用於處理貨幣值)
let num = 10.456;
console.log(num.toFixed(2));//10.46
console.log(num.toFixed());//10
console.log(num.toFixed(0));//10
console.log(num.toFixed(undefined));//10
console.log(num.toFixed(-1));//會報錯
注:toExponentlal()返回數值四捨五入後的指數表示法(e表示法)的字符串表示,參數表示轉換後的小數位數
(7)靜態方法
<br>含義:這裏的靜態方法,主要涉及到了面向對象裏面的知識,這裏簡單理解,就是經過該類型可以直接調用的方法。
下面介紹兩個Number類型的靜態方法:
Number.isInteger():用來判斷一個值是否爲整數。
注:在JS內,整數和浮點數是相同的存儲方法,因此3和3.0被認爲同一個值:
console.log(Number.isInteger(25));//true
console.log(Number.isInteger(25.0));//true
console.log(Number.isInteger(25.1));//false
console.log(Number.isInteger("15"));//false
console.log(Number.isInteger(true));//false
Number.isFinite():若是一個值是字符串、布爾類型、Infinity、-Infinity、NaN等(不是數字的時候),就返回false,若是是數字的話就返回true,而且不會進行自動類型轉換。
console.log(Number.isFinite(true));//false
console.log(Number.isFinite(7));//true
console.log(Number.isFinite(NaN));//false
console.log(Number.isFinite(Infinity));//false
console.log(Number.isFinite("23"));//false