js語法基本沿襲了c的語法特點(diǎn),如果學(xué)過c的朋友來開發(fā)js是非常容易入門的
- 變量/常量
const a = 100; //定義常量,不可變,強(qiáng)制更改會報(bào)錯,另一種實(shí)現(xiàn)方式是閉包,請看javascript進(jìn)階篇里的閉包
var b = 'bob'; //定義變量,通過var可以定義任意類型(目前是這樣的哈)
typeof(b); //輸出string,typeof方法是系統(tǒng)內(nèi)置函數(shù),用來檢測變量類型
- 定義變量可以通過var 來定義,同時可以不用寫var 直接用 c=true,區(qū)別在于前者是局部變量,后者是全局變量,我們提倡全部使用var來定義,這樣不會對變量環(huán)境造成污染,如果你想定義一個全局變量,可以寫在函數(shù)(函數(shù)下面會講解)外面,或在js模塊的開始定義。
- 數(shù)據(jù)類型
| 數(shù)據(jù)類型 | 含義 |
|---|---|
| string | 字符串 |
| boolean | 布爾true/false |
| number | 數(shù)字 |
| array | 數(shù)組 |
| object | 對象 |
| undefined | 未定義 對象不含有值 |
| null | 空值 |
- 操作實(shí)例
var str = 'hello'; //定義字符串
var str1 = str + 'world' //字符串拼接 輸出 helloworld
var bol = true; //定義布爾類型變量
typeof(bol); //輸出變量類型boolean
var num = 10; //定義num數(shù)字變量
var num1 = num - 5.5; //數(shù)字變量操作,輸出4.5 ,num整型會自動轉(zhuǎn)化為浮點(diǎn)類型
var arr = ['he','llo','world','!']; //定義數(shù)組
arr1=arr.join(''); //數(shù)組拼接 輸出helloworld!
var obj = {'name':'bob','sex':'1'} //定義對象object
console.log(obj.name); //輸出bob
document.write(obj['sex']); 輸出1
- 運(yùn)算符
| 運(yùn)算符 | 含義 |
|---|---|
| + | 加號,數(shù)學(xué)運(yùn)算和字符串連接符 |
| - | 減號,位于字符串前可將字符串類型轉(zhuǎn)換為數(shù)字(取反) |
| * | 乘 |
| / | 除 |
| % | 取余 |
| ++ | 自加 |
| -- | 自減 |
| = | 賦值 |
| += | 符號左邊元素等于符號左邊元素加上右邊元素,可用于數(shù)值和字符串 |
| -= | 符號左邊元素等于符號左邊元素減去右邊元素,數(shù)值運(yùn)算 |
| *= | 符號左邊元素等于符號左邊元素乘右邊元素 |
| /= | 符號左邊元素等于符號左邊元素除右邊元素 |
| %= | 符號左邊元素等于符號左邊元素對右邊元素取余 |
| delete | 運(yùn)算符刪除對以前定義的對象屬性或方法的引用 |
| void | 運(yùn)算符對任何值返回 undefined,用于避免輸出不應(yīng)該輸出的值 |
| ~ | 位運(yùn)算符 NOT |
| & | 位運(yùn)算符 AND |
| 豎杠(編輯器原因) | 位運(yùn)算符 OR |
| ^ | XOR 當(dāng)前為兩個不同為1 |
| << | 左移運(yùn)算 1<<10 = 1024 |
| >> | 有符號右移 |
| >>> | 無符號右移 |
| ! | 非 |
| && | AND 并且 |
| 雙豎杠 | OR 或者 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| == | 當(dāng)且僅當(dāng)兩個運(yùn)算數(shù)相等時,它返回 true (如果類型不同則轉(zhuǎn)換) |
| != | 當(dāng)且僅當(dāng)兩個運(yùn)算數(shù)不相等時,它返回 true (如果類型不同則轉(zhuǎn)換) |
| === | 當(dāng)且僅當(dāng)兩個運(yùn)算數(shù)相等并且類型相同時,它返回 true ,不做類型轉(zhuǎn)換 |
| b?c:d | 如果b成立則執(zhí)行c,否則執(zhí)行d |
* 運(yùn)算符不做過多案例,下面的文章中都會慢慢滲透
- 條件判斷IF-ELSE
var _a = 2; //定義一個變量_a
if(_a=1){
document.write(_a) //如果_a的值是1,則輸出1
}else{
_a=1;
docuement.write('change!') //如果不是1,則把_a的值設(shè)為1,并輸出change!
}
//當(dāng)然else if(){}在多種條件并存的情況下就有用武之地了~
- switch-case條件判斷語句和if-else語句都可以用來做條件判斷使用,if-else的使用范圍更廣,同時也更常用一些。而switch-case語句在特定條件下使用可以使文檔脈絡(luò)更加清晰。
var day=new Date().getDay();
switch (day)
{
case 0:
x="Today it's Sunday";
break;
case 1:
x="Today it's Monday";
break;
case 2:
x="Today it's Tuesday";
break;
case 3:
x="Today it's Wednesday";
break;
case 4:
x="Today it's Thursday";
break;
case 5:
x="Today it's Friday";
break;
case 6:
x="Today it's Saturday";
break;
}
//這里從W3C上找來一個例子,在我經(jīng)歷過的項(xiàng)目中,使用switch來做條件判斷的真不多。
- 循環(huán)遍歷
- for 循環(huán) (a,b,c) a語句為循環(huán)開始前定義,b是循環(huán)運(yùn)行條件,c是代碼塊執(zhí)行一次后運(yùn)行代碼
var count=0; //定義變量count,用于存儲和
for(var i =0;i<=10;i++){ //定義開始條件i=0;循環(huán)運(yùn)行條件i<=10;代碼塊執(zhí)行一次后運(yùn)行代碼i++;
count+=i; //求和 0-10
}
document.write(count); //輸出0-10 的和
- for-in循環(huán),一般用于遍歷json對象
var _list=[{'name':'bob','sex':'1'},{'name':'lisa','sex':'0'}]; //定義一個json數(shù)組
for(x in _list){
document.write(x['name']); //遍歷數(shù)組,輸出對象的名字
}
- while 循環(huán),一般用于單條件
var x=0; //同樣使用for循環(huán)的例子,求0-10的和
var count=0;
while(x<11){
count+=x;
x+=1;
}
- do-while 循環(huán),和while相同,只是無論條件是否成立,都執(zhí)行一次代碼塊
var x=0,count=0;
do{ //同樣使用for循環(huán)的例子,求0-10的和,但先執(zhí)行do模塊,然后再判斷while條件。
count+=x;
x+=1;
}while(x<11);
- try-catch-finally 錯誤捕捉,我們不能說優(yōu)秀的程序員都會用,但我認(rèn)為嚴(yán)謹(jǐn)?shù)脑秤蒙线€是靠譜的。
try{
//TODO something 業(yè)務(wù)邏輯都寫在這里面
}catch(e){
//當(dāng)然這里也是可以執(zhí)行代碼的
console.log('報(bào)錯啦:'+e);
}finally{
//去做你想做的事,誰也阻擋不了你
console.log('我在最后執(zhí)行,無論上面是否捕捉到錯誤~');
}
看到這里應(yīng)該可以搞些事情了。。。