文章目錄
語法
標識符
js中的標識符由字母,$,_以及數字組成,開頭的不能爲數字。函數名,屬性名,變量名可以用標識符表示,不能使用關鍵字和保留字。在js中標識符是區分大小寫的。
註釋
在js中註釋分爲單行註釋和多行註釋。
// 單行註釋
/* */多行註釋
嚴格模式
ES5中新增嚴格模式,可以在js文件頂部聲明,表示該代碼在嚴格模式下執行:
"use strict"
語句
在js中語句以分號結尾,分號也可以省略,js引擎會自動判斷語句的結束位置。在大括號內的語句組成一個語句塊。
變量
js中的變量定義時無須確定類型,可以存儲任意格式的數據。
定義變量
聲明一個變量,有以下兩種方式:
var
使用var關鍵字定義變量,在函數中爲局部變量,在全局中爲全局變量。
先定義變量再賦值:
var a;//undefined
a=2
定義時初始化一個變量:
var a=2;//2
數據類型
JavaScript中有5種基本數據類型,分別爲Number,String,Boolean,Undefined,Null,以及引用類型Object。
Number
number類型的數據分爲整數、浮點數以及NaN。
- 整數
- 十進制的表示爲不以0開頭的數字;
- 八進制以0(0o,0O)開頭;
- 十六進制以0X(0x)開頭;
- 二進制以0b(0B)開頭。
var a=12; //12
var a=012; //10
var a=0x12; //18
var a=0b11; //3
- 浮點數
浮點數的表示方法:由整數部分(包含正負號),小數點,小數部分,指數部分(e|E)
3.14
-3.14e+12 //-3.14*10的12次方
3.14e-12 //-3.14*10的-12次方
- 轉換爲數字
- Number()
Number('12') //12
Number(true) //1
Number('12a')//NaN
- parseInt,parseFloat
parseInt('12') //12
parseInt('12a')//12
parseInt(true)//NaN
- +
+'12' //12
+'12a' //NaN
+true //1
String
- 字符串字面量
以雙引號或單引號包裹着的字符爲字符串類型。
"hello world"
'hello world'
- 轉換爲字符串
- String()
String(12)//"12"
String(true)//"true"
- toString()
var age=11
console.log(age.toString())
- +
12+''//"12"
true+''//"true"
Boolean
- 布爾類型字面量
布爾類型的數據值爲true或false。 - 轉換爲布爾值
- Boolean()
Boolean(1) //true
Boolean('q')//true
Boolean(0)//false
Boolean('')//false
Boolean(null)//false
Boolean(undefined)//false
Boolean(NaN)//false
Undefined
變量已經定義但是未賦值,此時值爲undefined。
Null
null表示一個空的對象指針。
Object
object是一組鍵值對的集合,創建對象可以通過new操作符加上要創建對象的名稱來創建。
var o=new Object()或var o={}
Object的默認屬性和方法,每個實例都會擁有同樣的屬性和方法。
- constructor,返回創建該對象的函數;
- hasOwnProperty(propertyName),若該實例中存在該屬性返回true;
- isPrototypeOf(object)
- propertyIsEnumerable(propertyName),判斷屬性是否可以枚舉;
- toLocaleString()
- toString()
- valueOf()
var obj={
name:'marry',
age:12
}
obj.constructor //Object(){}
obj.hasOwnProperty('name') //true
obj.hasOwnProperty('sex') //false
obj.toString() //"[object Object]"
obj.toLocaleString() //"[object Object]"
obj.valueOf() //{name:'marry',age:12}
obj.propertyIsEnumerable('name') //true
obj.propertyIsEnumerable('constructor') //false
typeof
可以使用typeof操作符檢測基本數據類型。
typeof 123 //"number"
typeof '123' //"string"
typeof true//"boolean"
typeof b//"undefined"
typeof null//"null"
操作符
- 一元操作符
- 遞增和遞減
var i=0;
i++; //0
++i;//2
var i=0;
++i;//1
- 一元加減
num=+num
num=-num
- 位操作符
數值的二進制計算。
- 按位非(~)
- 按位與(&)
- 按位或(|)
- 按位異或(^)
- 左移(<<)
- 有符號的右移(>>)
- 無符號右移(>>>)
- 布爾操作符
用作邏輯判斷,經常用於if的條件中。
- 邏輯非(!)
一個操作數,結果與操作數的結果相反 - 邏輯與(&&)
兩個操作數,只有當兩邊的結果都爲true時返回true - 邏輯或(||)
兩個操作數,兩邊值中只要有一個爲真,返回的結果就爲真
- 乘性操作符
- 乘法(*)
- 除法(/)
- 求模(%)
- 加性操作符
- 加法(+)
- 減法(-)
- 關係操作符
<,>,<=,>= - 相等操作符
- 相等和不相等(==,!=)
等式兩邊會先轉換再比較。
null==undefined //true
"NaN"==NaN //false
1==true //true
"4"=4 //true
- 全等和不全等(===,!==)
等式兩邊在未轉換前相等返回true。
- 條件操作符
如果num1小於num2,返回num1,否則返回num2。
var max=(num1<num2)?num1:num2
- 賦值操作符(=)
var num=10
num+=10
- 逗號操作符
var num1=1,num2=2,num3=3;
語句
程序是由一條條語句組成的,程序是從上到下,順序執行的。語句通常以;爲結尾,表達式也可以爲作爲一條語句,用{}括起來的爲語句塊,語句塊通常用於流程控制,主要的流程控制有條件和循環。
條件語句
條件語句通過根據指定的條件判斷,來決定下一步的執行代碼。
if語句
- if…else語句
var x=1;
var y=2;
if(x<y){
console.log('x小於y')
}else{
console.log('x大於y')
}
if中的條件判斷會自動轉換爲ture或false,當條件表達式的值爲0,false,空字符串,NaN,undefined,null時,執行else中的語句。
- if…else if…else
switch語句
var x=1;
switch(x){
case 1:
console.log('hellow')
break
case 2:
console.log('world')
break
default:
console.log('!')
break
}
switch中放的是表達式,表達式的值決定了執行哪個case子句,如果沒有找到匹配的值,執行default中的語句。
循環和迭代
while語句
當滿足while中的條件時,執行循環體。一旦不滿足,不會執行循環體。
var x=0;
while(x<10){
x++;
console.log(x)
}
do…while語句
執行do中的語句塊直到while的條件不滿足,循環體至少執行一次。
var x=0;
do{
x++;
console.log(x)
}while(x<10)
for語句
for(var i=0;i<10;i++){
console.log(i)
}
for…in
for…in用於遍歷對象中的可枚舉屬性。
var obj={
'a':1,
'b':2
}
for(var i in obj){
console.log(i)
} // a b
break和continue
break爲跳出循環繼續執行循環外的語句,continue爲跳出本次循環重新開始循環。
函數
function fname(args){
//語句塊
}
fname() //調用函數
函數參數
js沒有函數重載,因爲函數的參數可以是多個,參數在js中是一個類數組的存在,無論多少參數,函數接收的到的只有這個類數組arguments。