JS基本语法 进修笔记1

以下内容摘自阮一峰-JavaScript-规范参考教程

语句

var a = 1 + 3;

1 + 3叫做表达式(expression),指一个为了获得返回值的计算式。语句和表达式的区分在于,前者重要为了举行某种操纵,平常情况下不须要返回值;后者则是为了获得返回值,一定会返回一个值。一般 JavaScript 言语中预期为值的处所,都能够运用表达式。比方,赋值语句的等号右侧,预期是一个值,因而能够安排种种表达式。

变量

变量是对“值”的签字援用。变量就是为“值”起名,然后援用这个名字,就等同于援用这个值。变量的名字就是变量名。

var a = 1;

上面的代码先声明变量a,然后在变量a与数值1之间竖立援用关联,称为将数值1“赋值”给变量a。今后,援用变量名a就会获得数值1。最前面的var,是变量声明敕令。它示意关照诠释引擎,要建立一个变量a。

变量的声明和赋值,是离开的两个步骤,上面的代码将它们合在了一同,现实的步骤是下面如许。

var a;
a = 1;

变量提拔

JavaScript 引擎的工作方式是,先剖析代码,猎取一切被声明的变量,然后再一行一行地运转。这形成的效果,就是一切的变量的声明语句,都会被提拔到代码的头部,这就叫做变量提拔(hoisting)。

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

上面代码起首运用console.log要领,在控制台(console)显现变量a的值。这时候变量a还没有声明和赋值,所以这是一种毛病的做法,然则现实上不会报错。由于存在变量提拔,真正运转的是下面的代码

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



    原文作者:orangecat00
    原文地址: https://segmentfault.com/a/1190000013192123
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞