一、語法
1、js是區(qū)分大小寫的test
和Test
是不一樣的(重要)。
2、標識符是指變量、函數(shù)名、參數(shù)名、屬性名,命名規(guī)則是第一個字符必須是字母
以及_
和$
開頭,其他字符可以是字母
、_
、$
、數(shù)字
。
3、語言中的注釋是:
//單行注釋
/*
這是塊級注釋
*/
4、語言標準和嚴格模式,嚴格模式開啟:
function test(){
'use strict'
//嚴格模式開啟會處理ECMAscript中不確定的行為,而且對某些不安全的操作拋出錯位。
}
5、語句結(jié)束要加;
,當然不加也是可以的,但是在代碼壓縮的解析上會帶來不必要的錯誤(強烈推薦加上)
二、關鍵字和保留字
關鍵字:按照規(guī)則,關鍵字也是語言保留的,不能用作標識符。
break | do | instanceof | this | function |
---|---|---|---|---|
typeof | case | else | while | try |
new | var | catch | in | delete |
finally | return | void | throw | if |
continue | for | switch | default | with |
debugger* |
保留字
abstract | enum | int | short | static |
---|---|---|---|---|
boolean | export | interface | import | public |
byte | extends | long | super | double |
char | final | native | synchronized | implements |
class | float | package | throws | volatile |
const | goto | private | transient | protected |
debugger |
第5 版把在非嚴格模式下運行時的保留字縮減為下列這些:
class | enum | extends | super | const |
---|---|---|---|---|
export | import |
在嚴格模式下,第5 版還對以下保留字施加了限制:
implements | package | public | interface | private |
---|---|---|---|---|
static | let | protected | yield |
注意, let 和yield 是第5 版新增的保留字;其他保留字都是第3 版定義的。為了最大程度地保證兼容性,建議大家將第3 版定義的保留字外加let 和yield 作為編程時的參考。
在ECMAScript3版本代碼中使用關鍵字作標識符,會導致"Identifier Expected" 錯誤。而使用保留字作標識符可能會也可能不會導致相同的錯誤,具體取決于特定的引擎。一般來說,最好都不要使用關鍵字和保留字作為標識符和屬性名,以便與將來的ECMAScript 版本兼容。
三、變量
var messages;//聲明變量var是關鍵字,messages是標識符。
var messages='hi!';//變量messages保存的變量值`hi!`
messages=520;//沒問題,但是不推薦使用。
function test(){
var messages01=1000;//函數(shù)里面命名的是局部變量。
messages02=2000;//相當于全局變量,因為沒有用vae關鍵字。(但是不要這樣,嚴格模式會報錯)
};
test();
alert(messages01);//錯誤,訪問不到局部變量。
alert(messages);//2000沒問題
var a,b,c,d;//可以一次聲明多個變量以逗號分割分號結(jié)尾。
在嚴格模式下,不能定義eval和arguments的變量,就是標識符會導致語法錯誤。
四、數(shù)據(jù)類型
1. typeof:用于檢測數(shù)據(jù)類型
2. Undefined:只有一個值undefined,聲明一個變量但沒有賦值就會自動取值為undefined。
3. Null:只有一個值null,null表示空對象指針,用typeof檢測時返回'object'.null==nudefined //true.
4. Boolean:有兩個值true和false,Boolean(message)可以轉(zhuǎn)化任意值。
5. Number:是數(shù)字類型,'e7'10的7次方,'e-7'負10的7次方。0.1+0.2!=0.3而是0.30000000000000004,
js最小值Number.MIN_VALUE==5e-324,最大值Numer.NAX_VALUE==1.7976931348623157e+308。
NaN非數(shù)值是特殊數(shù)值,本來要返回數(shù)值的時候未返回數(shù)值的情況,NaN自身都不等于自身。
Number()轉(zhuǎn)換任意值,parseInt()轉(zhuǎn)化成整數(shù)第二個參數(shù)可以是幾進制, parseFlont()也是轉(zhuǎn)換成數(shù)值只是帶有小數(shù)如果有多個點只取第一個。
String:是字符串" "和''中的字符就是字符串,和字符串相加會被隱式轉(zhuǎn)換,toString()可以把別的類型轉(zhuǎn)化為字符串。
Object:代表對象,其實就是數(shù)據(jù)和功能的集合。創(chuàng)建對象var obj = new Object()。
五、操作符
1、一樣操作符:--
、++
遞減和遞增,--2
前置優(yōu)先級高,2--
后置優(yōu)先級降低。一元'+',在非數(shù)字類型前會隱式轉(zhuǎn)換成數(shù)值。一元'-'會把數(shù)值變成負數(shù),非數(shù)值和一元加一樣。
2、位操作:暫略過。
3、布爾操作符:!
非、&&
與兩個都是真、||
或有一個為真。
4、乘性操作符:*
乘、/
除、%
余(求模)。
5、加性操作符:+
加、-
減。
6、關系操作符:<=
、>=
、<
、>
.
7、相等操作符:==
相等操作符會隱式轉(zhuǎn)換類型進行比對、===
全等于不會轉(zhuǎn)換類型比對,比較嚴謹。
8、條件操作符:var value = trueAndFalse ? true : false;
9、賦值操作符:=
、*=
、/=
、%=
、+=
、-=
、<<=
、>>=
、>>>=
、簡化用的,并不能提升性能。
10、逗號操作符:可以在一行執(zhí)行多個操作,var a,b,c,d;還可以賦值var a=(1,2,3,4)//a是4。
六、語句
//if語句
if(true){true執(zhí)行此處代碼塊}else{false執(zhí)行此處代碼}
if(true){true執(zhí)行此處代碼塊}else if(true){false執(zhí)行此處代碼}.多個..else{false執(zhí)行此處代碼}
//do...while語句
do...while語句是后測試語句,do...while中的代碼至少執(zhí)行一次。
do{true執(zhí)行的代碼}while(條件為true)
while語句
while是前測試語句,只有在達到條件就是為true才會執(zhí)行。
while(false and true){是true則執(zhí)行此處代碼}。
for語句
for循環(huán),也是個前測試語句
for(聲明變量;運算條件;變量變化){循環(huán)代碼}
for....in...語句
for...in...語句是一個精準的迭代語句,可以用來枚舉對象屬性
for(property in expression){執(zhí)行的代碼}
label語句
將要返回的標簽。多和break和continue一起使用,多用于嵌套循環(huán),跳到標簽指定位置。
標簽名:for(;;){break 標簽名}
break和continue
break是直接跳出當前循環(huán),continue也是跳出循環(huán)但是會從循環(huán)頂端再次執(zhí)行。
with語句
將代碼作用于一個對象的作用域中,少使用會降低性能
with(對象){該對象的私有作用域}
switch語句
流程控制語句和if很想
switch(將要判斷的對象){
case (判斷)://如果是將執(zhí)行以下代碼
代碼;
break;//執(zhí)行完跳出
case (判斷2)://如果是將執(zhí)行以下代碼
代碼;
break;//執(zhí)行完跳出
default://如果都不是將執(zhí)行以下代碼
代碼;
}
七函數(shù)
函數(shù)是每一個語言的核心概念,通過封裝多條語句,可以在調(diào)用。ECMAScript通過function關鍵字來聲明,后面跟一組參數(shù)和函數(shù)體。
1、參數(shù)
函數(shù)的參數(shù)沒有限制可以任意傳,也可以是任意類型,函數(shù)的參數(shù)是有arguments對象來管理的。arguments對象和數(shù)組類似但不是數(shù)組,可以通過[]來訪問,使用length可以查看arguments的長度。嚴格模式對arguments做了限制,重寫arguments的值會報錯。
2.沒有重載
JavaScript沒有重載,通過傳入不同的參數(shù)和類型可以模擬重載,兩個相同的名的函數(shù),后面會吧前面覆蓋。
小結(jié)
本章主要介紹了,JavaScript的語法和數(shù)據(jù)類型(六個)五個基本類型一個引用類型,各個操作符,還有流程控制語句,以及函數(shù)的簡單理解。
(暫停)