一澡匪、語法
1、js是區(qū)分大小寫的test
和Test
是不一樣的(重要)褒链。
2、標(biāo)識符是指變量疑苔、函數(shù)名甫匹、參數(shù)名、屬性名惦费,命名規(guī)則是第一個字符必須是字母
以及_
和$
開頭兵迅,其他字符可以是字母
、_
薪贫、$
恍箭、數(shù)字
。
3瞧省、語言中的注釋是:
//單行注釋
/*
這是塊級注釋
*/
4扯夭、語言標(biāo)準(zhǔn)和嚴格模式鳍贾,嚴格模式開啟:
function test(){
'use strict'
//嚴格模式開啟會處理ECMAscript中不確定的行為,而且對某些不安全的操作拋出錯位交洗。
}
5骑科、語句結(jié)束要加;
,當(dāng)然不加也是可以的构拳,但是在代碼壓縮的解析上會帶來不必要的錯誤(強烈推薦加上)
二咆爽、關(guān)鍵字和保留字
關(guān)鍵字:按照規(guī)則,關(guān)鍵字也是語言保留的置森,不能用作標(biāo)識符斗埂。
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版本代碼中使用關(guān)鍵字作標(biāo)識符,會導(dǎo)致"Identifier Expected" 錯誤瓮顽。而使用保留字作標(biāo)識符可能會也可能不會導(dǎo)致相同的錯誤县好,具體取決于特定的引擎。一般來說暖混,最好都不要使用關(guān)鍵字和保留字作為標(biāo)識符和屬性名缕贡,以便與將來的ECMAScript 版本兼容。
三拣播、變量
var messages;//聲明變量var是關(guān)鍵字晾咪,messages是標(biāo)識符。
var messages='hi贮配!';//變量messages保存的變量值`hi!`
messages=520;//沒問題谍倦,但是不推薦使用。
function test(){
var messages01=1000;//函數(shù)里面命名的是局部變量泪勒。
messages02=2000;//相當(dāng)于全局變量昼蛀,因為沒有用vae關(guān)鍵字。(但是不要這樣圆存,嚴格模式會報錯)
};
test();
alert(messages01);//錯誤叼旋,訪問不到局部變量。
alert(messages);//2000沒問題
var a,b,c,d;//可以一次聲明多個變量以逗號分割分號結(jié)尾沦辙。
在嚴格模式下夫植,不能定義eval和arguments的變量,就是標(biāo)識符會導(dǎo)致語法錯誤油讯。
四详民、數(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糙麦、關(guān)系操作符:<=
辛孵、>=
、<
赡磅、>
.
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...語句是一個精準(zhǔn)的迭代語句库物,可以用來枚舉對象屬性
for(property in expression){執(zhí)行的代碼}
label語句
將要返回的標(biāo)簽霸旗。多和break和continue一起使用,多用于嵌套循環(huán)戚揭,跳到標(biāo)簽指定位置诱告。
標(biāo)簽名:for(;;){break 標(biāo)簽名}
break和continue
break是直接跳出當(dāng)前循環(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關(guān)鍵字來聲明,后面跟一組參數(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ù)的簡單理解猾警。
(暫停)