JS基础语法 学习笔记1

如下内容摘自阮一峰-JavaScript-标准参考教程express


语句

var a = 1 + 3;

1 + 3叫作表达式(expression),指一个为了获得返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操做,通常状况下不须要返回值;后者则是为了获得返回值,必定会返回一个值。凡是 JavaScript 语言中预期为值的地方,均可以使用表达式。好比,赋值语句的等号右边,预期是一个值,所以能够放置各类表达式。code

变量

变量是对“值”的具名引用。变量就是为“值”起名,而后引用这个名字,就等同于引用这个值。变量的名字就是变量名。教程

var a = 1;

上面的代码先声明变量a,而后在变量a与数值1之间创建引用关系,称为将数值1“赋值”给变量a。之后,引用变量名a就会获得数值1。最前面的var,是变量声明命令。它表示通知解释引擎,要建立一个变量a。ip

变量的声明和赋值,是分开的两个步骤,上面的代码将它们合在了一块儿,实际的步骤是下面这样。it

var a;
a = 1;

变量提高io

JavaScript 引擎的工做方式是,先解析代码,获取全部被声明的变量,而后再一行一行地运行。这形成的结果,就是全部的变量的声明语句,都会被提高到代码的头部,这就叫作变量提高(hoisting)。console

console.log(a);
var a = 1;

上面代码首先使用console.log方法,在控制台(console)显示变量a的值。这时变量a尚未声明和赋值,因此这是一种错误的作法,可是实际上不会报错。由于存在变量提高,真正运行的是下面的代码function

var a;
console.log(a);
a = 1;

最后的结果是显示undefined,表示变量a已声明,但还未赋值。 变量

-->只有在行首,才会被当成单行注释,不然会看成正常的运算。循环

function countdown(n) {
  while (n --> 0) console.log(n);
}
countdown(3)
// 2
// 1
// 0

IF语句

*else代码块老是与离本身最近的那个if语句配对。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
else console.log('world');

上面代码不会有任何输出,else代码块不会获得执行,由于它跟着的是最近的那个if语句,至关于下面这样。

  if (m !== 1) {
  if (n === 2) {
    console.log('hello');    
  } else {
    console.log('world');
  }
}

若是想让else代码块跟随最上面的那个if语句,就要改变大括号的位置。

if (m !== 1) {
  if (n === 2) {
    console.log('hello');    
  }
} else {
  console.log('world');
}
// world

Switch语句

*须要注意的是,每一个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等于其余值

上面代码中,case代码块之中没有break语句,致使不会跳出switch结构,而会一直执行下去。正确的写法是像下面这样。

switch (x) {
  case 1:
    console.log('x 等于1');
    break;
  case 2:
    console.log('x 等于2');
    break;
  default:
    console.log('x 等于其余值');
}

*须要注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

var x = 1;

switch (x) {
  case true:
    console.log('x 发生类型转换');
  default:
    console.log('x 没有发生类型转换');
}
// x 没有发生类型转换

三元运算符

(条件) ? 表达式1 : 表达式2

上面代码中,若是“条件”为true,则返回“表达式1”的值,不然返回“表达式2”的值。

var msg = '数字' + n + '是' + (n % 2 === 0 ? '偶数' : '奇数');

break 语句和 continue 语句

*break语句用于跳出代码块或循环

var i = 0;

while(i < 100) {
  console.log('i 当前为:' + i);
  i++;
  if (i === 10) break;
}

*continue语句用于当即终止本轮循环,返回循环结构的头部,开始下一轮循环。

var i = 0;

while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 当前为:' + i);
}

上面代码只有在i为奇数时,才会输出i的值。若是i为偶数,则直接进入下一轮循环。

*若是存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

标签(label)

JavaScript 语言容许,语句的前面有标签(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

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),知足条件时,直接跳出双层循环。若是break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

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
相关文章
相关标签/搜索