基本语法 入门

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语句后面不使用标签,则只能进入下一轮的内层循环。

参考连接

相关文章
相关标签/搜索