基本語法 入門

1.語句
2.變量
2.1概念
2.2變量提高
3.標識符
4.註釋
5.區塊
6.條件語句
6.1if 結構
6.2if...else 結構
6.3switch 結構
6.4三元運算符 ?:
7.循環語句
7.1while 循環
7.2for 循環
7.3do...while 循環
7.4break 語句和 continue 語句
7.5標籤(label)
參考連接express

1.語句和表達式
以分號結束的是語句,表達式加分號沒有意義
語句(statement)是爲了完成某任務的操做。
1 + 3叫作表達式(expression),指一個爲了獲得返回值的計算式app

var a = 1 + 3;3d

語句和表達式的區別在於,前者主要爲了進行某種操做,通常狀況下不須要返回值;後者則是爲了獲得返回值,必定會返回一個值。code

預期爲值的地方,均可以使用表達式。好比,賦值語句的等號右邊,預期是一個值,所以能夠放置各類表達式。()裏都是表達式ip

2.變量作用域

給值取名,而後拿來引用。
變量是對「值」的具名引用rem

var a = 1;
上面的代碼先聲明變量a,而後在變量a與數值1之間創建引用關係,稱爲將數值1「賦值」給變量ait

var,是變量聲明命令。它表示通知解釋引擎,要建立一個變量a。io

二次聲明沒用 賦值有用
var x = 1;
var x;
x // 1
var x = 1;
var x = 2;console

// 等同於

var x = 1;
var x;
x = 2;

2.1概念
2.2變量提高

JavaScript 引擎的工做方式是,先解析代碼,獲取全部被聲明的變量,而後再一行一行地運行。

3.標識符
4.註釋

須要注意的是,-->只有在行首,纔會被當成單行註釋,不然會看成正常的運算。
HTML 代碼的註釋,因此<!--和-->也被視爲合法的單行註釋。

x = 1; <!-- x = 2;
--> x = 3;
上面代碼中,只有x = 1會執行,其餘的部分都被註釋掉了。

function countdown(n) {
while (n --> 0) console.log(n);
}
countdown(3)
// 2
// 1
// 0
上面代碼中,n --> 0實際上會看成n-- > 0,所以輸出二、一、0。

5.區塊

JavaScript 使用大括號,將多個相關的語句組合在一塊兒,稱爲「區塊」(block)。

對於var命令來講,JavaScript 的區塊不構成單獨的做用域(scope)。在外部仍有效

{
var a = 1;
}

a // 1

6.條件語句
6.1if 結構

var x = 1;
var y = 2;
if (x = y) {
console.log(x);
}
// "2"
上面代碼的原意是,當x等於y的時候,才執行相關語句。可是,不當心將嚴格相等運算符寫成賦值表達式,結果變成了將y賦值給變量x,再判斷變量x的值(等於2)的布爾值(結果爲true)。

if (x = 2) { // 不報錯
if (2 = x) { // 報錯

6.2if...else 結構

else代碼塊老是與離本身最近的那個if語句配對。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
else console.log('world');
上面代碼不會有任何輸出,else代碼塊不會獲得執行,由於它跟着的是最近的那個if語句,至關於下面這樣。

6.3switch 結構

須要注意的是,每一個case代碼塊內部的break語句不能少,不然會接下去執行下一個case代碼塊,而不是跳出switch結構。

var x = 1;

switch (x) {
case 1:

console.log('x 等於1');

case 2:

console.log('x 等於2');

default:

console.log('x 等於其餘值');

}
// x等於1
// x等於2
// x等於其餘值

switch語句部分和case語句部分,均可以使用表達式。
switch語句後面的表達式,與case語句後面的表示式比較運行結果時,採用的是嚴格相等運算符(===),而不是相等運算符(==),這意味着比較時不會發生類型轉換。
switch (1 + 3) {
case 2 + 2:

f();
break;

default:

neverHappens();

}

var x = 1;

switch (x) {
case true:

console.log('x 發生類型轉換');
break;

default:

console.log('x 沒有發生類型轉換');

}
// x 沒有發生類型轉換
6.4三元運算符 ?:

var even = (n % 2 === 0) ? true : false;
上面代碼中,若是n能夠被2整除,則even等於true,不然等於false。它等同於下面的形式。

var even;
if (n % 2 === 0) {
even = true;
} else {
even = false;
}

7.循環語句
7.1while 循環
7.2for 循環

for語句後面的括號裏面,有三個表達式。

初始化表達式(initialize)開始時候只執行一次
條件表達式(test):每輪循環開始時,都要執行這個條件表達式,只有值爲真,才繼續進行循環。
遞增表達式(increment):每輪循環的最後一個操做,一般用來遞增循環變量

for ( ; ; ){
console.log('Hello World');
}
上面代碼省略了for語句表達式的三個部分,結果就致使了一個無限循環。

7.3do...while 循環

不論是否符合都回先執行一次

7.4break 語句和 continue 語句

for循環也可使用break語句跳出當前循環。

for (var i = 0; i < 5; i++) {
console.log(i);
if (i === 3)

break;

}
// 0
// 1
// 2
// 3

var i = 0;

while (i < 100){
i++;
if (i % 2 === 0) continue;
console.log('i 當前爲:' + i);
}
上面代碼只有在i爲奇數時,纔會輸出i的值。若是i爲偶數,則直接進入下一輪循環。

若是存在多重循環,不帶參數的break語句和continue語句都只針對最內層循環

7.5標籤(label)

語句的前面有標籤(label),至關於定位符

標籤一般與break語句和continue語句配合使用,跳出特定的循環。

top:
for (var i = 0; i < 3; i++){

for (var j = 0; j < 3; j++){
  if (i === 1 && j === 1) break top;
  console.log('i=' + i + ', j=' + j);
}

}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

foo: {
console.log(1);
break foo;
console.log('本行不會輸出');
}
console.log(2);
// 1
// 2
上面代碼執行到break foo,就會跳出區塊。

continue語句也能夠與標籤配合使用。

top:
for (var i = 0; i < 3; i++){

for (var j = 0; j < 3; j++){
  if (i === 1 && j === 1) continue top;
  console.log('i=' + i + ', j=' + j);
}

}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2
上面代碼中,continue命令後面有一個標籤名,知足條件時,會跳過當前循環,直接進入下一輪外層循環。若是continue語句後面不使用標籤,則只能進入下一輪的內層循環。

參考連接

相關文章
相關標籤/搜索